考虑一个包含字节数据的列表(即['\ 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
,它会打印括号{
和内容}
的表示形式。
>>> b = b'\x00\x0f\xff'
>>> print b
�
>>> print repr(b)
'\x00\x0f\xff'
>>> print {'test':b}
{'test': '\x00\x0f\xff'}
编辑
数字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__
表示形式。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句