>>> 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
我希望所有值都显示为十六进制
他的怎么样?
表达式
[item for item in sequence]
是一个所谓的list comprehension。它基本上是一种非常简洁的方法,可以编写一个简单的for
循环,并根据结果创建一个列表。^{} 内置函数接受一个字符串,并将其转换为一个整数,该整数是其对应的unicode代码点(对于ASCII字符集中与其在ASCII表中的值相同的字符)。
它的对应项,^{} 表示8bit字符串,或者^{} 表示unicode对象,则相反。
然后,^{} 内置函数简单地将整数转换为它们的十六进制表示。
正如@TimPeters所指出的,在Python 3中,您需要丢失
ord()
,因为遍历bytes对象将(已经)产生整数:尝试
binascii.hexlify
:或者,如果希望使用空格使其更具可读性:
Python 3.6+,使用f字符串:
如果你想让
\x
到处逃逸,你必须自己重新格式化它;例如相关问题 更多 >
编程相关推荐