Ich arbeite derzeit an einem Verschlüsselungs- / Entschlüsselungsprogramm und muss in der Lage sein, Bytes in eine Ganzzahl umzuwandeln. Ich weiß das:
bytes([3]) = b'\x03'
Ich kann jedoch nicht herausfinden, wie ich das Gegenteil tun soll. Was mache ich furchtbar falsch?
python
python-3.x
int
type-conversion
byte
Vladimir Shevyakov
quelle
quelle
struct
Modul, wenn Sie mehrere Variablen gleichzeitig konvertieren möchten.Antworten:
Vorausgesetzt, Sie haben mindestens 3.2, ist dafür Folgendes integriert :
## Examples: int.from_bytes(b'\x00\x01', "big") # 1 int.from_bytes(b'\x00\x01', "little") # 256 int.from_bytes(b'\x00\x10', byteorder='little') # 4096 int.from_bytes(b'\xfc\x00', byteorder='big', signed=True) #-1024
quelle
int.from_bytes
undord(b'\x03')
für einzelne Bytes / Zeichen?int.from_bytes
int.from_bytes(b'\xe4', "big", signed=True)
ord()
int.from_bytes
Byte-Listen sind abonnierbar (zumindest in Python 3.6). Auf diese Weise können Sie den Dezimalwert jedes Bytes einzeln abrufen.
>>> intlist = [64, 4, 26, 163, 255] >>> bytelist = bytes(intlist) # b'@x04\x1a\xa3\xff' >>> for b in bytelist: ... print(b) # 64 4 26 163 255 >>> [b for b in bytelist] # [64, 4, 26, 163, 255] >>> bytelist[2] # 26
quelle
int.from_bytes( bytes, byteorder, *, signed=False )
funktioniert bei mir nicht Ich habe die Funktion dieser Website verwendet, sie funktioniert gut
https://coderwall.com/p/x6xtxq/convert-bytes-to-int-or-int-to-bytes-in-python
def bytes_to_int(bytes): result = 0 for b in bytes: result = result * 256 + int(b) return result def int_to_bytes(value, length): result = [] for i in range(0, length): result.append(value >> (i * 8) & 0xff) result.reverse() return result
quelle