(Pdb) p mac
'\xd0\xbf\x9c\xd8\xf0\x00'
p type(mac)
<type 'str'>
如何使用Python2.7提取並打印確切的MAC地址? 在.proto消息中,mac_address被定義爲 「可選字節mac」。如何在解碼Python中的protobuf時提取並打印正確的值
(Pdb) p mac
'\xd0\xbf\x9c\xd8\xf0\x00'
p type(mac)
<type 'str'>
如何使用Python2.7提取並打印確切的MAC地址? 在.proto消息中,mac_address被定義爲 「可選字節mac」。如何在解碼Python中的protobuf時提取並打印正確的值
import struct
a='\xd0\xbf\x9c\xd8\xf0\x00'
for i in range(6):
print hex(struct.unpack("B", a[i])[0])[2:], ":",
打印
d0 : bf : 9c : d8 : f0 : 0 :
不是這樣的。我的意思是我作爲一些變量作爲字符串和一些mac收到protobuf ..當我打印它時,所有在.proto中定義爲int,字符串的變量都很好,除了類型爲字節的變量。沒有更通用的顯示方式。 – user7375520
這也許?
>>> mac_str = ':'.join("{:02x}".format(ord(c)) for c in mac)
>>> print(mac_str)
d0:bf:9c:d8:f0:00
如果你只是想整數列表做:
mac_decoded = [ord(c) for c in mac]
不知道你的 '解碼' 的意思是還有什麼...
難道沒有辦法解碼這個字符串嗎? – user7375520
':'.join([hex(c)[2:] for c in map(ord,'\xd0\xbf\x9c\xd8\xf0\x00')])
打印:
'd0:bf:9c:d8:f0:0'
基本上,這條線將十六進制字符串轉換爲0到255範圍整數的列表,然後將每個元素c轉換回沒有'\ x'字符的十六進制字符串,然後將列表元素作爲字符串與中間的':'連接。
是不是有解碼這個字符串的方法? – user7375520
你也可以做'r'\ xd0 \ xbf \ x9c \ xd8 \ xf0 \ x00'.replace(r'\ x','',1).replace(r'\ x',':')'更清潔 –
我不認爲有這樣的直接類型鑄造方法。也許你可以用正則表達式獲得更漂亮的結果。 –
沒有解碼它並查看內容的方法。爲什麼人們正在進入字符串格式化,這不是我正在尋找的.. – user7375520
也許你可以顯示你想要的結果對於給定的示例字符串看起來像什麼,因爲'解碼'可能意味着許多不同的事情。 – PaulMcG