2016-06-20 11 views
1

Was ist der Unterschied zwischen , "LLL"? Ich denke, in L, Ergebnis zu Long umgewandelt und das Ergebnis ist 5 und in LLL, Ergebnis zu Lang konvertiert und das Ergebnis ist 555?Was ist der Unterschied zwischen "L", "LLL" in struct.unpack()?

import struct data = 5

  1. Result = struct.pack("L", data)

  2. Result = struct.pack("LLL", data, data, data)

ich versuchte, mich selbst zu sehen, was diese Ausgänge wie sind durch folgenden Code, aber es nur Ergebnisse in unlesbaren zufälligen Zeichen

import struct 
data = 5 

Result1 = struct.pack("L", data) 

Result2 = struct.pack("LLL", data, data, data) 

print (Result1) 
print (Result2) 

Antwort

0

Was ist als der Inhalt mehr aufschlussreich sein könnte, ist die len Ihre Ergebnisse:

import struct 
data = 5 

Result1 = struct.pack("L", data) 

Result2 = struct.pack("LLL", data, data, data) 

print len(Result1) 
print len(Result2) 

Ausgang:

$ python p.py 
8 
24 

Verpackungsdaten in ein binäres Format als str packen. Jeder long ist als 8 Bytes codiert. Wenn Sie 3 Longs codieren, erhalten Sie 3 * 8 = 24 Bytes.

Die Kodierungen sind dokumentiert here. Wenn Sie ein 32-Bit-Python-Bit oder ein 64-Bit-Python-Bit verwenden, können Sie unterschiedliche Antworten erhalten - Windows vs. Linux können ebenfalls unterschiedliche Ergebnisse liefern.

Wenn Sie die Daten als Hex-Strings lesen:

>>> map(hex, map(ord, struct.pack("L", 255))) 
['0xff', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0'] 

oder

>>> struct.pack("L", 255).encode('hex_codec') 
'ff00000000000000' 

oder binäre

>>> map(bin, map(ord, struct.pack("L", 255)))                
['0b11111111', '0b0', '0b0', '0b0', '0b0', '0b0', '0b0', '0b0'] 
+0

'@ rrauenza': ohh, großer Dank, aber die 'len' Ergebnis ist anders in meiner Ausgabe es 4 und 12 in meiner Ausgabe, und wie die Bits dieser Werte zu drucken? –

+0

Sie verwenden wahrscheinlich nur einen 32-Bit-Python. – rrauenza

+0

aber, mein Betriebssystem ist 64bit win 10, also habe ich die falsche Python-Umgebung richtig installiert .. –

Verwandte Themen