'0x604f'和b'\ x60 \ x4f'之间有区别吗?
1.如何在python中将'0x604f'更改为b'\ x60 \ x4f'?
2.如何在python中将b'\ x60 \ x4f'更改为'0x604f'?
我在python3.3中。

最佳答案

您可以使用int(s, 0)0x...形式的字符串转换为整数。参数0代替整数基数指示int根据前缀进行转换:0x表示16的基数,0o表示8的基数,0b表示2的基数,而10表示基数的无前缀。

然后,您可以使用struct.pack(来自struct module)将整数打包为字节串。

示范:

>>> struct.pack('>H', int('0x604f', 0))
b'`O'
>>> b'\x60\x4f'
b'`O'


反过来,使用hexstruct.unpack

>>> hex(struct.unpack('>H', b'\x60\x4f')[0])
'0x604f'


请注意,格式>H表示“大端16位数字”。您可以为不同的字节数使用不同的格式字符串(对于8位数字,B;对于32位数字,I;对于64位数字,Q)。

08-20 03:06