在 Python 中,我想将整数3892
转换为具有给定格式和结果的十六进制代码\x00\x00\x0F\x34
。如何做到这一点?
问问题
5223 次
3 回答
8
您正在转换为数字的二进制表示,而不是十六进制表示(尽管 Python 会将字节显示为十六进制)。使用该struct
模块进行此类转换。
示范:
>>> struct.pack('>I', 3892)
'\x00\x00\x0f4'
>>> struct.pack('>I', 4314)
'\x00\x00\x10\xda'
\x
请注意,'4' 的 ASCII 码是 0x34,如果它是不可打印的字符,python 只会显示带有转义的字节。因为 0x34 是可打印的,python 将其输出为4
。
上面格式代码中的“>”表示“大端”,“I”是无符号整数转换(4 个字节)。
于 2012-07-27T07:31:24.930 回答
2
import re
print re.sub(r'([0-9A-F]{2})',r'\\x\1','%08X' % 3892)
给出:
\x00\x00\x0F\x34
于 2012-07-27T09:07:37.367 回答
1
如果您安装了 numpy:
>>> import numpy as np
>>> np.int32(3892).tostring()
'4\x0f\x00\x00'
于 2012-07-27T07:50:50.137 回答