簡體   English   中英

從mac地址轉換為十六進制字符串,反之亦然 - 包括python 2和3

[英]Convert from mac address to hex string and vice versa - both python 2 and 3

我有MAC地址,我想發送到dpkt作為原始數據。 dpkt包期望我將數據傳遞為十六進制蜇。 所以,假設我有以下mac地址: '00:de:34:ef:2e:f4' ,寫成: '00de34ef2ef4' ,我想編碼為'\\x00\\xdeU\\xef.\\xf4'后向翻譯將提供原始數據。

在Python 2上,我發現了幾種使用encode('hex')和decode('hex')的方法。 但是,此解決方案不適用於Python 3。

我在查找代碼片段以支持兩個版本時遇到了一些麻煩。

我對此有所幫助。

謝謝

binascii模塊適用於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中工作,其中strbytesb -prefix什么也不做。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM