Я пытаюсь получить целочисленное значение для b '\ x00 \ x00 \ x00 \ x01', которое должно быть 1, я предполагаю.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
Маленький endian - это «перевернутый», где последний байт приходит последним. – yak
@joey: '' Маленький кончик - это Единая истинная сущность. Он помещает бит 0-7 в байт 0, бит 8-15 в байт 1 и так далее. Большой эндиан был исторической ошибкой, вызванной тем, что мы обычно пишем цифры «в обратном порядке», так что бит 0 приходит на последнем месте. ' упрямый>' –