对Python3中bytes和HexStr之间的转换详解
在Python操作数据内容时,多数情况下可能遇到下面3种类型的数据处理:
hexstring如:'1C532145697A8B6F'
str如:'\x1C\x53\x21\x45\x69\x7A\x8B\x6F'
list如:[0x1C,0x53,0x21,0x45,0x69,0x7A,0x8B,0x6F]
各种第三方模块(如pyDes),或者自己写的接口中,可能存在由于类型不统一需要在这3种数据中来回切换的情况。
需要用到的核心的方法如下:
list()将对象转换为list
str()将对象转换为str
bytearray()将对象转换为bytearray
bytearray.fromhex()将对象从hexstring转换为bytearray
binascii.b2a_hex()将对象从str转换为hexstring
1.整形列表转str
如:[0x53,0x21,0x6A]->'\x53\x21\x6a'
方法:list->bytearray->str
x=[0x53,0x21,0x6A] y=str(bytearray(x))
2.str转整形列表
如:'\x53\x21\6a'->[0x53,0x21,0x6A]
方法:逐个字符转成十进制
x='\x53\x21\x6a' y=[ord(c)forcinx]
3.整形列表转换为hexstring
如:[0x53,0x21,0x6A]->'53216A'
方法:list->bytearray->str->hexstring
importbinascii x=[0x53,0x21,0x6A] y=str(bytearray(x)) z=binascii.b2a_hex(y)
4.hexstring转换为整形列表
如:'53216A'->[0x53,0x21,0x6A]
方法:hexstring->bytearray->list
x='53216A' y=bytearray.fromhex(x) z=list(y)
5.hexstring转换为str
如:'53216A'->'\x53\x21\x6A'
方法:hexstring->bytearray->str
x='53216A' y=bytearray.fromhex(x) z=str(y)
以上这篇对Python3中bytes和HexStr之间的转换详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。