(Pdb) p mac
'\xd0\xbf\x9c\xd8\xf0\x00'
p type(mac)
<type 'str'>
정확한 파이어 와이어 주소를 추출하고 인쇄하려면 어떻게해야합니까? .proto 메시지에서 mac_address는 "optional bytes mac"으로 정의됩니다.파이썬에서 protobuf를 디코딩하는 동안 올바른 값을 추출하고 출력하는 방법
(Pdb) p mac
'\xd0\xbf\x9c\xd8\xf0\x00'
p type(mac)
<type 'str'>
정확한 파이어 와이어 주소를 추출하고 인쇄하려면 어떻게해야합니까? .proto 메시지에서 mac_address는 "optional bytes mac"으로 정의됩니다.파이썬에서 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 :
싫어함. 내 말은 문자열과 일부 맥에서 어떤 변수로받은 protobuf를 의미한다. 내가 인쇄 할 때 .proto에 int로 정의 된 모든 변수는 유형이 바이트 인 경우를 제외하고 문자열이 잘 전달된다. 거기에 더 일반적인 방법으로 표시되지 않습니다. – user7375520
이?
>>> mac_str = ':'.join("{:02x}".format(ord(c)) for c in mac)
>>> print(mac_str)
d0:bf:9c:d8:f0:00
그냥 int 치의 목록을 원하는 경우
는 수행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'
기본적으로이 줄은 16 진수 문자열을 0 ~ 255 범위 int의 목록을 가져온 다음 각 요소 c를 '\ x'문자가없는 16 진수 문자열로 다시 변환 한 다음 목록 요소를 사이에 ':'가있는 문자열로 결합합니다.
이 문자열을 디코딩 할 방법이 없습니까? – user7375520
또한 'r'\ xd0 \ xbf \ x9c \ xd8 \ xf0 \ x00'.replace (r '\ x', '', 1) .replace (r '\ x', ':')'할 수 있습니다 훨씬 더 깨끗합니다. –
직접 형 식 접근 방식이 있다고 생각하지 않습니다. 어쩌면 당신은 정규식으로 더 예쁜 결과를 얻을 수 있습니다. –
디코드하고 내용을 볼 수있는 방법이 없습니까? 왜 사람들은 문자열 포맷팅을 할 것인가. 내가 찾고있는 것이 아닙니다. – user7375520
'디코드'는 여러 가지 의미가 있기 때문에 원하는 결과가 어떻게 보이는지 보여 줄 수 있습니다. – PaulMcG