1
b '\ x00 \ x00 \ x00 \ x01'の整数値を取得しようとしています。python struct module - アンパック時の奇数値
私はこの値を '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-7をバイト0に、ビット8-15をバイト1に入れます。ビックエンディアンは歴史的な間違いでした。なぜなら、ビット0が最後の場所に来るように、私たちは通常「逆の」数字を書いているからです。 ' opinionated>' –