'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'
反过来,使用
hex
和struct.unpack
:>>> hex(struct.unpack('>H', b'\x60\x4f')[0])
'0x604f'
请注意,格式
>H
表示“大端16位数字”。您可以为不同的字节数使用不同的格式字符串(对于8位数字,B
;对于32位数字,I
;对于64位数字,Q
)。