Ce face int.to_bytes() și int.from_bytes()
to_bytes() scrie un întreg pe un număr fix de octeți, iar int.from_bytes() citește un întreg din octeți. Sunt folosite în fișiere binare, protocoale de rețea și criptografie.
byteorder spune ordinea octeților: 'big' (cel mai semnificativ primul, ordinea „de rețea”) sau 'little' (cel mai puțin semnificativ primul, ca pe procesoarele x86 și ARM). Cu signed=True se pot reprezenta și numere negative. Din Python 3.11, length și byteorder au valori implicite.
Parametri
| Parametru | Descriere |
|---|---|
length |
Numărul de octeți. Dacă numărul nu încape, apare OverflowError. |
byteorder |
'big' sau 'little'. |
signed |
Dacă se folosește complementul față de doi pentru numere negative. |
Ce returnează
to_bytes: bytes. from_bytes: int.
Exemple
Exemplul 1: Ordinea octeților
n = 1026
print(n.to_bytes(2, "big"), n.to_bytes(2, "little"))
print(n.to_bytes(4, "big").hex(" "))
print(int.from_bytes(b"\x04\x02", "big"), int.from_bytes(b"\x02\x04", "little"))
Rezultat
b'\x04\x02' b'\x02\x04'
00 00 04 02
1026 1026
Exemplul 2: Numere negative și depășire
print((-1).to_bytes(2, "big", signed=True))
print(int.from_bytes(b"\xff\xff", "big", signed=True), int.from_bytes(b"\xff\xff", "big"))
try:
(300).to_bytes(1, "big")
except OverflowError as e:
print("Eroare:", e)
Rezultat
b'\xff\xff'
-1 65535
Eroare: int too big to convert
Greșeli frecvente
- Citești octeții cu altă ordine decât cea folosită la scriere și obții un număr complet diferit.
Comenzi înrudite
bytes() și bytearray(): Secvențe de octeți (valori 0-255) pentru date binare: fișiere, rețea, text codificat.int(): Tipul numerelor întregi; int() transformă un text sau un număr zecimal în număr întreg.int.bit_length() și int.bit_count(): Câți biți sunt necesari pentru a scrie un număr și câți dintre ei sunt 1.