我试图理解一些东西,所以我从原始网络数据中以十六进制的形式接收数据,在这个特定的例子中是一个MAC地址,现在我使用python2.7中Binascii库中的Unhexlify()/Hexilfy()函数,例如,我在六角形
“\xa5\xbb%\x8f\xa0\xda”
这是一个6个八位字节长的mac地址,我完全不知道发生了什么。。。。在
如果我使用函数
binascii.hexlify('\xa5\xbb%\x8f\xa0\xda')
它回来了
^{pr2}$这确实是我希望收到的正确的MAC地址,但这真的没有意义。。。。 “\xa5\xbb%\x8f\xa0\xda”,这不是十六进制的正确形式,它包含一个%,以及比纳西伊·赫克斯利菲()函数设法将其转换为正确的mac地址。。。在
老实说,我没能理解这一点,我猜这和从hex到ascii的转换有关,而不是hex到dec的转换,但是我不明白unhexlify()/hexlify()函数是如何工作的,我怎么会以十六进制的形式接收数据,并且它包含一个%,但我的十六进制到ascii函数设法处理它。。。 发生什么事。在
"\xa5\xbb%\x8f\xa0\xda"
-它是由十六进制代码定义的字符序列。一个字符是"\xa5"
,它是单个字符,而不是4。例如,print '\x61'
只产生a
。在关于%sign,它是可打印字符,这就是为什么它在字符串中打印的原因。它有实际使用的十六进制代码
0x25
。你可以把它写成\x25
:"\xa5\xbb\x25\x8f\xa0\xda"
更多here。在Andrey是对的,如果字符前面没有
\x
,则使用标准ASCII表:相关问题 更多 >
编程相关推荐