Jak przekonwertować Int na bajty w Pythonie?
Obiekt int może służyć do reprezentowania tej samej wartości w formacie bajtu. Liczba całkowita reprezentuje bajt i jest przechowywana jako tablica, której najbardziej znacząca cyfra (MSB) jest przechowywana na początku lub na końcu tablicy.
Metoda 1: int.tobytes()
Wartość int można przekonwertować na bajty za pomocą metody int.to_bytes(). Metoda jest wywoływana na wartości int i nie jest obsługiwana przez Python 2 (wymaga minimum Python3) do wykonania.
Składnia: int.to_bytes(długość, kolejność bajtów)
Argumenty :
długość – żądana długość tablicy w bajtach.
byteorder – kolejność tablicy, w której ma zostać przeprowadzona konwersja typu int na bajty. kolejność bajtów może mieć dowolne wartości mały gdzie najbardziej znaczący bit jest przechowywany na końcu, a najmniej na początku, lub duży , gdzie MSB jest przechowywane na początku, a LSB na końcu.
Wyjątki:
OverflowError jest zwracany w przypadku, gdy długość wartości całkowitej nie jest wystarczająco duża, aby zmieścić się w długości tablicy.
Poniższe programy ilustrują użycie tej metody w Pythonie:
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)> |
Wyjście
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)> |
Wyjście
b' x00x00x00x00'
Metoda 2: Konwersja liczby całkowitej na ciąg i ciągu na bajty
To podejście działa i jest kompatybilne w obu wersjach Pythona, 2 i 3. Ta metoda nie przyjmuje jako argumentów długości tablicy ani kolejności bajtów.
- Wartość całkowitą przedstawioną w formacie dziesiętnym można najpierw przekonwertować na ciąg znaków za pomocą funkcji str(), która przyjmuje jako argument wartość całkowitą, która ma zostać przekonwertowana na odpowiedni odpowiednik ciągu.
- Ten odpowiednik ciągu jest następnie konwertowany na sekwencję bajtów poprzez wybranie żądanej reprezentacji dla każdego znaku, czyli kodowania wartości ciągu. Odbywa się to za pomocą metody str.encode().
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)> |
Wyjście
b'5'