python issu中十六进制到ascii格式的网络数据

2024-06-16 13:32:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图理解一些东西,所以我从原始网络数据中以十六进制的形式接收数据,在这个特定的例子中是一个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函数设法处理它。。。 发生什么事。在


Tags: 函数网络mac地址ascii形式xa0hex
2条回答

"\xa5\xbb%\x8f\xa0\xda"-它是由十六进制代码定义的字符序列。一个字符是"\xa5",它是单个字符,而不是4。例如,print '\x61'只产生a。在

关于%sign,它是可打印字符,这就是为什么它在字符串中打印的原因。它有实际使用的十六进制代码0x25。你可以把它写成\x25"\xa5\xbb\x25\x8f\xa0\xda" 更多here。在

Andrey是对的,如果字符前面没有\x,则使用标准ASCII表:

enter image description here

>>> print binascii.hexlify('012')
'303132'

相关问题 更多 >