这是一个简单的例子:
In [155]: exampleArray = bytearray([0xc0, 0xff, 0x01])
In [156]: exampleArray
Out[156]: bytearray(b'\xc0\xff\x01')
In [157]: print ' 0x'.join('{:02x}'.format(x) for x in exampleArray)
c0 0xff 0x01
但我想要的是 0xc0 0xff 0x01
答案 0 :(得分:2)
str.join()
仅将连接符置于连接的元素之间。来自str.join()
documentation:
元素之间的分隔符是提供此方法的字符串。
(大胆强调我的)。
加入空格,并更改格式以包含0x
前缀:
' '.join('{:#04x}'.format(x) for x in exampleArray)
#
更改格式以包含0x
前缀;请注意您需要调整字段宽度以考虑额外的2个字符(每个字段现在占用4个字符,包括0x
前缀)。
演示:
>>> exampleArray = bytearray([0xc0, 0xff, 0x01])
>>> print ' '.join('{:#04x}'.format(x) for x in exampleArray)
0xc0 0xff 0x01
答案 1 :(得分:1)
您可以阅读documentation of str.join
:
返回一个字符串,该字符串是可迭代迭代中字符串的串联。如果在iterable中有任何非字符串值,则会引发
TypeError
,包括bytes对象。元素之间的分隔符是提供此方法的字符串。
因此' 0x'
是一个分隔符,放在字符串之间。但是,您可以通过以下方式轻松解决此问题:
print ' '.join('0x{:02x}'.format(x) for x in exampleArray)