1
b '\ x00 \ x00 \ x00 \ x01'의 정수 값을 가져 오려고합니다. 이는 1이어야합니다.파이썬 구조체 모듈 - 언팩시 홀수 값
'1'값을 얻으려면 여러 가지를 시도했지만, 대신 실제로 높은 숫자를 얻습니다.
이
내가 뭘하려 :import struct
from struct import *
#I had 4 int values:
byte1 = 0
byte2 = 0
byte3 = 0
byte4 = 1
#I packed each to one byte (seems weird, one int to 1 byte - so is this correct?)
byte1 = struct.pack('b', byte1) #returns b'\x00'
byte2 = struct.pack('b', byte2)
byte3 = struct.pack('b', byte3)
byte4 = struct.pack('b', byte4) #returns b'\x01'
#Now i place all those bytes in one container
con = byte1+byte2+byte3+byte4 #returns b'\x00\x00\x00\x01'
#hmm ..returns 4 - so seems alright?
len(con)
#tried several things:
struct.unpack('I', con) #unsigned int - returns 16777216 (what!?)
struct.unpack('i', con) #signed int - returns the same as above
unpack('I', con) #same ..
내 질문; 내가 뭔가 잘못하고 있는거야? 내가 뭔가 잘못 이해하고 있니? 누군가가 '(1,)'을 표시하지 않는 이유를 설명해 주실 수 있습니까?
int rep를 얻는 또 다른 방법이있는 경우. 저에게도 알려주십시오.
친절하게 답해 주셔서 감사합니다.
완벽합니다. 실제로 작동합니다. 하지만 리틀 엔디안은 오른쪽에서부터 읽기 시작했다고 생각했습니다. 어쨌든, 고맙습니다. – joey
리틀 엔디안은 최상위 바이트가 마지막에 오는 "반전 된"것입니다. – yak
@joey :''리틀 엔디안은 진정한 엔디안 중 하나입니다. 바이트 0에서 비트 0-7, 바이트 1에서 비트 8-15 등을 넣습니다. 빅 엔디안은 일반적으로 비트 "0"이 마지막 위치에 오도록 "역순으로"숫자를 쓰는 데서 비롯된 역사적인 실수였습니다. ' opinionated>' –