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


