Python – #62 – int() – .from_bytes()

Metoda .from_bytes()

Metoda zwraca liczbę całkowitą reprezentowaną przez podaną tablicę lub ciąg znakowy bajtów.

Składnia:

int.from_bytes(bytes, byte_order, signed)

Parametry:

bytes – tablica bajtów, lub ciąg znakowy reprezentujący ciąg bajtów.
byte_order – określa kolejność bajtów użytych do reprezentacji liczby całkowitej. Jeżeli byteorder jest “big”, to najbardziej znaczący bajt znajduje się na początku tablicy bajtów. Jeśli argument byteorder ma wartość “little”, to najbardziej znaczący bajt znajduje się na końcu tablicy bajtów.
signedparametr opcjonalny – typ bool –  wartość domyślna to False – W przypadku, gdy ustawimy na True, pierwszy bit, gdy jest jedynką, oznacza, że liczba jest ujemna (Kod uzupełnień do dwóch).

Wartość zwracana:

int

Przykłady:

byte1 = b'\xF8\x1A'  # 1111 1000 0001 1010
int1 = int.from_bytes(byte1, 'big')
print(int1)  # wynik --> 63514 --> 1111 1000 0001 1010
int1 = int.from_bytes(byte1, 'little')
print(int1)  # wynik --> 6904  --> 0001 1010 1111 1000
int1 = int.from_bytes(byte1, 'big', signed=True)
print(int1)  # wynik --> -2022 --> 0111 1000 0001 1010 (pierwszy bit gdy jest 1 oznacza liczbę ujemną)
int1 = int.from_bytes(byte1, 'little', signed=True)
print(int1)  # wynik --> 6904 --> 0001 1010 1111 1000 (pierwszy bit gdy jest 1 oznacza liczbę ujemną)

# Wyjaśnienie 
print(ord(b'\xF8'))  # wynik --> 248 --> 1111 1000
print(ord(b'\x1A'))  # wynik --> 26  --> 0001 1010
# big --> 248 * 256**1 + 26 * 256**0 = 63514 --> 1111 1000 0001 1010
# little --> 248 * 256**0 + 26 * 256**1 = 6904  --> 0001 1010 1111 1000
# big signed True --> 1111 1000 0001 1010 pierwszy bit 1 to zamieniamy 0 i zapisujemy jako liczbę ujemną 0111 1000 0001 1010
# little signed True --> 0001 1010 1111 1000 pierwszy bit 0 to pozostaje 0 i zapisujemy jako liczbę dodatnią 0001 1010 1111 1000

# Przykład 2
byte1 = b'\xF8\xFA'  # 1111 1000 1111 1010
int1 = int.from_bytes(byte1, 'big')
print(int1)  # wynik --> 63738 --> 1111 1000 1111 1010
int1 = int.from_bytes(byte1, 'little')
print(int1)  # wynik --> 64248  --> 1111 1010 1111 1000
int1 = int.from_bytes(byte1, 'big', signed=True)
print(int1)  # wynik --> -1798 --> 0111 1000 0001 1010 (pierwszy bit gdy jest 1 oznacza liczbę ujemną)
int1 = int.from_bytes(byte1, 'little', signed=True)
print(int1)  # wynik --> -1288 --> 0111 1010 1111 1000 (pierwszy bit gdy jest 1 oznacza liczbę ujemną)

# Przykład 3
list1 = [248, 250]  # 1111 1000 1111 1010
int1 = int.from_bytes(list1, 'big')
print(int1)  # wynik --> 63738 --> 1111 1000 1111 1010
int1 = int.from_bytes(byte1, 'little')
print(int1)  # wynik --> 64248  --> 1111 1010 1111 1000
int1 = int.from_bytes(byte1, 'big', signed=True)
print(int1)  # wynik --> -1798 --> 0111 1000 0001 1010 (pierwszy bit gdy jest 1 oznacza liczbę ujemną)
int1 = int.from_bytes(byte1, 'little', signed=True)
print(int1)  # wynik --> -1288 --> 0111 1010 1111 1000 (pierwszy bit gdy jest 1 oznacza liczbę ujemną)

Autor artykułu
Dominik Bednarski

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.