Kaip Python konvertuoti Int į baitus?
Int objektas gali būti naudojamas tai pačiai reikšmei pateikti baito formatu. Sveikasis skaičius reiškia baitą, saugomas kaip masyvas, kurio reikšmingiausias skaitmuo (MSB) saugomas masyvo pradžioje arba pabaigoje.
1 būdas: int.tobytes()
Naudojant metodą int reikšmė gali būti konvertuojama į baitus int.to_bytes(). Metodas iškviečiamas naudojant int reikšmę, jo nepalaiko Python 2 (vykdyti reikia mažiausiai Python3).
Sintaksė: int.to_bytes(ilgis, baitų tvarka)
Argumentai :
ilgis – norimas masyvo ilgis baitais .
byteorder – masyvo tvarka, pagal kurią int konvertuojama į baitus. byteorder gali turėti reikšmes kaip bet kurią mažai kur svarbiausias bitas saugomas pabaigoje ir mažiausiai pradžioje, arba didelis , kur pradžioje saugomas MSB, o pabaigoje – LSB.
Išimtys:
OverflowError grąžinama tuo atveju, jei sveikojo skaičiaus vertės ilgis nėra pakankamai didelis, kad jį būtų galima įtraukti į masyvo ilgį.
Šios programos iliustruoja šio metodo naudojimą Python:
Python3
# declaring an integer value> integer_val> => 5> > # converting int to bytes with length> # of the array as 2 and byter order as big> bytes_val> => integer_val.to_bytes(> 2> ,> 'big'> )> > # printing integer in byte representation> print> (bytes_val)> |
Išvestis
b'x00x05'
Python3
# declaring an integer value> integer_val> => 10> > # converting int to bytes with length> # of the array as 5 and byter order as> # little> bytes_val> => integer_val.to_bytes(> 5> ,> 'little'> )> > # printing integer in byte representation> print> (bytes_val)> |
Išvestis
b' x00x00x00x00'
2 būdas: Sveikasis skaičius konvertuojamas į eilutę ir eilutę į baitus
Šis metodas veikia, yra suderinamas su 2 ir 3 Python versijomis. Šis metodas nelaiko masyvo ilgio ir baitų eilės argumentais.
- Sveikojo skaičiaus reikšmę, pavaizduotą dešimtainiu formatu, pirmiausia galima konvertuoti į eilutę naudojant str() funkciją, kuri kaip argumentą paima sveikojo skaičiaus reikšmę, kurią reikia konvertuoti į atitinkamą eilutės atitikmenį.
- Tada šis eilutės atitikmuo konvertuojamas į baitų seką, pasirenkant norimą kiekvieno simbolio atvaizdą, tai yra, užkoduojant eilutės reikšmę. Tai atliekama str.encode() metodu.
Python3
# declaring an integer value> int_val> => 5> > # converting to string> str_val> => str> (int_val)> > # converting string to bytes> byte_val> => str_val.encode()> print> (byte_val)> |
Išvestis
b'5'