该字符串'1234'
是 等同于'\x31\x32\x33\x34'
:
>>> '\x31\x32\x33\x34'
'1234'
>>> '\x31\x32\x33\x34' == '1234'
True
因此,将其编码为十六进制然后再次对其进行解码是..繁忙的工作:
>>> '1234'.encode('hex').decode('hex')
'1234'
\xhh
只是一种帮助您创建值的 符号 ;当回显字节字符串时,Python始终将直接显示可打印的ASCII字符,而不是使用\xhh
表示法。
此处的十六进制表示法只是表示每个字节的值的一种方法,它实际上是0到255之间的整数。Python字符串中的每个字节都是具有这种约束值的字节,并且编码后的'hex'
编解码器将产生一个字符串这些字节的十六进制数字,然后再从十六进制数字的字节。
MAGICSTRING = '1234'
value = '\x00{}\x00{}'.format(MAGICSTRING, chr(len(MAGICSTRING) + 2))
在这里,该\xhh
符号用于产生空字节,该chr()
函数产生长度“ byte”。
演示:
>>> MAGICSTRING = '1234'
>>> '\x00{}\x00{}'.format(MAGICSTRING, chr(len(MAGICSTRING) + 2))
'\x001234\x00\x06'
>>> '\x00{}\x00{}'.format(MAGICSTRING, chr(len(MAGICSTRING) + 2)) == '\x00\x31\x32\x33\x34\x00\x06'
True