[英]Is there a way to convert code to a string and vice versa in Python?
[英]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中工作,其中str
是bytes
而b
-prefix什么也不做。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.