2014-11-28 5 views
0

안녕하세요 저는 32 비트 값을 가지고있어 4 바이트를 잘라내어 각 바이트를 ASCII로 변환하고 4 개의 문자열. 그리고 나는 또한 역 과정이 필요하다.32 비트 (4 문자)를 int 값에서 파이썬의 ASCII 문자열로 변환하는 방법

## the variable "binword" is a 32 bit value read directly from an MCU, where each byte is an 
## ASCII character 

char0 = (binword & 0xFF000000) >> 24 
char1 = (binword & 0xFF0000) >> 16 
char2 = (binword & 0xFF00) >> 8 
char3 = (binword & 0xFF) 

fourLetterWord = str(unichr(char0))+str(unichr(char1))+str(unichr(char2))+str(unichr(char3)) 

지금, 정말 않은 우아하고 시간이 소요되는이 방법을 찾을 수 있습니다, 그래서 질문은 내가이 더 잘 할 어떻게입니다 : 나는 다음과 같은 추한 방식으로 한 방향으로이 작업을 수행 할 수 있었다? 그리고 나는 더 중요한 질문을 생각합니다. 어떻게 다른 방향으로 변환합니까? ,

number = struct.unpack("I", result)[0] 

하시기 바랍니다 구조체 문자열의 구조체 모듈의 공식 문서를 참조하십시오

답변

1

는 이러한 convertions

number = 32424234 

import struct 
result = struct.pack("I", number) 

및 백업을위한 struct 모듈의 packunpack 호출을 사용한다 구문, 및 endiannes 및 숫자 크기를 보장하는 표식. https://docs.python.org/2/library/struct.html

부수적으로 - 이것은 "ASCII"가 아닙니다. 이것은 bytestring입니다. ASCII는 32-127 숫자 범위의 코드가있는 특정 텍스트 인코딩을 나타냅니다. 요점은 바이트 스트림이 필요하다면 바이트 문자열을 텍스트로 생각해서는 안되며 텍스트 문자열의 별칭으로 "ASCII"를 생각하면 텍스트 문자의 1 % 미만을 나타낼 수 있기 때문입니다 세계.