Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从mac地址转换为十六进制字符串,反之亦然-python 2和3_Python_Python 2.7_Python 3.x_Mac Address_Dpkt - Fatal编程技术网

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

从mac地址转换为十六进制字符串,反之亦然-python 2和3,python,python-2.7,python-3.x,mac-address,dpkt,Python,Python 2.7,Python 3.x,Mac Address,Dpkt,我想把MAC地址作为原始数据发送给dpkt。 dpkt包希望我以十六进制stings的形式传递数据。 因此,假设我有以下mac地址:'00:de:34:ef:2e:f4',写为:'00de34ef2ef4',我想编码成类似于'\x00\xdeU\xef.\xf4'的东西,反向翻译将提供原始数据 在Python2上,我找到了两种方法,使用encode('hex')和decode('hex')。 然而,这个解决方案不适用于Python3 在两个版本中,我都很难找到支持这一点的代码段 我想请你帮忙 感

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

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

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

我想请你帮忙


感谢

关于python3,必须使用
编解码器
模块在任意编解码器之间进行编码:

>>> import codecs
>>> codecs.decode(b'00de34ef2ef4', 'hex')
b'\x00\xde4\xef.\xf4'
>>> codecs.encode(b'\x00\xde4\xef.\xf4', 'hex')
b'00de34ef2ef4'
这只适用于
字节
,而不适用于
str
(unicode)对象。它也适用于python2.7,其中
str
bytes
,而
b
-前缀不起任何作用。

适用于python2和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'

两种解决方案都成功了,谢谢!我之所以选择这个方法,是因为我在代码中对其他方法使用了
binascii