考虑一个列表包含字节数据(即 ['\x03', '\x00', '\x32', ... ])
temp = b''
for c in field_data:
temp += c
print "%x" % ord(c)
上面的代码正确地将所有字节连接到 temp (字节字符串文字)中。但是当我将其添加到字典元素中时,在某些情况下输出不正确。
testdic = {'dd':temp}
print testdic
例如,0x0 0x0 0x0 0x0 0x0 0x0 0x33 0x32 在列表中,第一个代码显示所有字节都已正确连接。但是当我立即执行第二个代码时,输出如下:
{'dd': '\x00\x00\x00\x00\x00\x0032'}
我不完全确定为什么会发生这种情况。
当您打印一个dict
,它打印大括号{
and }
连同一个表示的内容。
>>> b = b'\x00\x0f\xff'
>>> print b
�
>>> print repr(b)
'\x00\x0f\xff'
>>> print {'test':b}
{'test': '\x00\x0f\xff'}
EDIT
数字 0x33 和 0x32 是字符“3”和“2”的 ASCII 值。repr
将直接显示可打印的ascii字符,同时使用\x00
不可打印字符的表示法。
>>> b = b'\x33\x32'
>>> print b
32
>>> print repr(b)
'32'
>>> hex(ord('3'))
'0x33'
这是我用来打印字符串的十六进制表示形式的函数
>>> def hexstr(s):
... return '-'.join('%02x' % ord(c) for c in s)
...
>>> hexstr(b'\x00\xff\x33\x32')
'00-ff-33-32'
你也许可以子类化dict
并覆盖__str__
如果您希望这自动发生,请表示。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)