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.
signed – parametr 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ą)