>>> struct.pack('2I',12, 30)
b'\x0c\x00\x00\x00\x1e\x00\x00\x00'
>>> struct.pack('2I',12, 31)
b'\x0c\x00\x00\x00\x1f\x00\x00\x00'
>>> struct.pack('2I',12, 32)
b'\x0c\x00\x00\x00 \x00\x00\x00'
^in question
>>> struct.pack('2I',12, 33)
b'\x0c\x00\x00\x00!\x00\x00\x00'
^in question
我希望所有值都显示为十六进制
原文由 Siavash 发布,翻译遵循 CC BY-SA 4.0 许可协议
他的呢?
表达式
[item for item in sequence]
是所谓的 list comprehension 。它基本上是一种编写简单for
循环并根据结果创建列表的非常紧凑的方法。ord()
内置函数接受一个字符串,并将其转换为一个整数,这是它对应的 unicode 代码点(对于 ASCII 字符集中的字符,与它们在 ASCII 表中的值相同)。它的对应物
chr()
对于 8 位字符串或unichr()
对于 unicode 对象做相反的事情。hex()
内置函数然后简单地将整数转换为它们的十六进制表示。正如@TimPeters 所指出的,在 Python 3 中,您需要丢失
ord()
,因为遍历字节对象将(已经)产生整数: