2

在 Python 中,我想将整数3892转换为具有给定格式和结果的十六进制代码\x00\x00\x0F\x34。如何做到这一点?

4

3 回答 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 回答