从Mac地址转换为十六进制字符串,反之亦然 - Python 2和3均适用

3
我有一个MAC地址,想要将其作为原始数据发送给dpkt。dpkt包希望我将数据传递为十六进制字符串。假设我有以下MAC地址:'00:de:34:ef:2e:f4',写成:'00de34ef2ef4',我想将其编码为类似于'\x00\xdeU\xef.\xf4'的东西,反向翻译将提供原始数据。
在Python 2中,我发现使用encode('hex')decode('hex')可以解决这个问题。然而,这个解决方案在Python 3中不起作用。
我正在寻找支持两个版本的代码片段,希望能得到帮助。
谢谢。
2个回答


2
在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前缀不起作用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接