Seite 1 von 1

struct.pack problem

Verfasst: Sonntag 8. Dezember 2019, 18:07
von kevv

Code: Alles auswählen


intvalue=1
data = struct.pack("<ii", intvalue,intvalue)
#print(data)

intvalue1,intvalue2 = struct.unpack("<ii", data)
print(intvalue1)
print(intvalue2)
print("")


intvalue=1
data = struct.pack("<i", intvalue)
#print(data)

intvalue2 = struct.unpack("<i", data)
print(intvalue2)
print("----------------------------")



Hallo
hab ne kleine frage

was mach ich falsch im 2 beispiel?
das ergebnis sollte doch gleich sein !?

Re: struct.pack problem

Verfasst: Sonntag 8. Dezember 2019, 18:57
von Sirius3
Der Rückgabewert von struct.unpack ist immer ein Tuple, das im ersten Beispiel entpackt wird, im zweiten nicht.

Re: struct.pack problem

Verfasst: Sonntag 8. Dezember 2019, 19:03
von kevv
und wie löse ich das jetzt?

Re: struct.pack problem

Verfasst: Sonntag 8. Dezember 2019, 19:36
von __deets__
wert, = struct.unpack(....)

Das Komma ist wichtig.

Re: struct.pack problem

Verfasst: Montag 9. Dezember 2019, 10:25
von DeaD_EyE
So ist besser:

Code: Alles auswählen

wert = struct.unpack(....)[0]
Das Komma an Ende übersieht man leicht.
Alternativ kann man auch _ nutzen.

Code: Alles auswählen

wert, _ = struct.unpack(....)

Re: struct.pack problem

Verfasst: Montag 9. Dezember 2019, 10:59
von Sirius3
@DeaD_EyE: _ kann man nur nutzen, wenn auch wirklich zwei Elemente aus unpack herauskommen.
Das etwas ungewöhnlichere

Code: Alles auswählen

wert, *_ = struct.unpack(...)
würde ich der Lesbarkeit wegen auch nicht empfehlen.