从mac地址转换为十六进制字符串,反之亦然-python 2和3

2024-09-28 20:48:39 发布

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

我有MAC地址要作为原始数据发送给dpkt。 dpkt包希望我将数据作为十六进制刺传递。 所以,假设我有以下mac地址:'00:de:34:ef:2e:f4',写为:'00de34ef2ef4',我想编码成类似'\x00\xdeU\xef.\xf4'的内容,反向翻译将提供原始数据。

在Python 2上,我找到了两种方法来使用encode('hex')和decode('hex')。 然而,这个解决方案不适用于Python 3。

在这两个版本中,我都很难找到支持它的代码片段。

我想请人帮忙。

谢谢


Tags: 数据编码原始数据mac地址de发送给hex
2条回答

^{} module同时适用于Python 2和3:

>>> import binascii
>>> binascii.unhexlify('00de34ef2ef4') # to raw binary
b'\x00\xde4\xef.\xf4'
>>> binascii.hexlify(_) # and back to hex
b'00de34ef2ef4'
>>> _.decode('ascii') # as str in Python 3
'00de34ef2ef4'

在python3上,任意编解码器之间的编码必须使用codecs模块完成:

>>> import codecs
>>> codecs.decode(b'00de34ef2ef4', 'hex')
b'\x00\xde4\xef.\xf4'
>>> codecs.encode(b'\x00\xde4\xef.\xf4', 'hex')
b'00de34ef2ef4'

这只适用于bytes,而不适用于str(unicode)对象。它也将在python2.7中工作,其中strbytes,而b前缀什么也不做。

相关问题 更多 >