2016-12-20 2 views
0

저는 리틀 엔디안 (little-endian)입니다. 그래서이 데이터는 UDP 패킷에서 가져 왔습니다.16 진수 문자열을 파이썬으로 출력합니다.

data, addr = sock.recvfrom(1024) 

print(data) 

내가 메모리에 작은 엔디안 레이아웃으로 이해 '\xfe\x15'

같은 것을 제공합니다.

이 값은, 내가 C에서 0x15fe

printf("%x", hexvalue); 

를 표시하고 날 0x15fe 직선을 제공한다.

어떻게 파이썬에 16 진수 값을 제대로 출력 할 수 있습니까?

감사합니다.

+0

repr (데이터)를 사용해 보셨습니까? –

답변

2

이 같은 struct를 사용하는 int로 bytestring을 변환 할 수 있습니다

다음 <h
>>> data = b'\xfe\x15' 
>>> num, = struct.unpack('<h', data) 

정수에 서명 리틀 엔디안 2 바이트를 나타냅니다. 데이터가 서명되지 않은 경우 <H을 사용하십시오. 자세한 내용은 documentation을 확인하십시오.

그럼 당신은 print(hex(num)) 또는 유사한을 사용하여 인쇄 할 수 있습니다

>>> print(hex(num)) 
0x15fe 

을 측면 참고로, sock.recvfrom(1024) 2 바이트보다 더 많거나 적은 반환 할 수 있음을 기억하십시오. 구문 분석 할 때이를 고려하십시오.

관련 문제