2016-06-15 5 views
0

큰 부호없는 정수를 바이트 배열로 변환하여 직렬 포트를 통해 보낼 수 있습니다.임의의 크기의 부호없는 long int를 바이트 문자열로 변환

파이썬 3.2에는 바이트 배열을 반환하기 위해 long 정수를 변환하는 함수 to_bytes이 내장되어 있습니다. 그러나이 python 2.7에서 사용할 수 없습니다. 마찬가지로 파이썬 2.7은 struct lib를 가지고 있지만 라이브러리는 임의로 큰 int를 처리하지 않습니다. 스택 오버플로에도 비슷한 question이 있지만 허용되는 대답은 pickle입니다. 압축을 풀지 않고 long int를 보내려고하는 것처럼 그건 도움이되지 않습니다. 물론 int를 반복하고 사용자 정의 무언가를 생각해 낼 수는 있지만 무거운 물건을 처리 할 수있는 무언가가 있기를 바랬습니다.

답변

1

x 형식 지정자를 사용하여 16 진수 문자열로 변환하고 길이가 홀수 인 경우 0을 추가 한 다음 'hex'으로 디코딩하여 바이트로 변환합니다. 가장 빠른 방법은 아니지만 간단합니다.

>>> '{:x}'.format(20L).decode('hex') 
'\x14'