Exercise 1 solution data = bytes.fromhex("00 00 01 f4 ff ff ff 9c 2a 00") a = int.from_bytes(data[0:4], "big") b = int.from_bytes(data[4:8], "big", signed=True) c = int.from_bytes(data[8:10], "little") print(a, b, c) # 500 -100 42 print(int.from_bytes(data[4:8], "big")) # 4294967196 (Run as written; the output matched the comments.) Explanation: the first four bytes are 0x000001f4, which is 500 when read big-endian. The next four are 0xffffff9c; read as signed they are -100, but read as unsigned the same bytes give 4294967196 (that is 2**32 - 100). The last two bytes, 2a 00, are little-endian: the low byte comes first, so the value is 0x002a = 42. Reading them big-endian would give 10752, which is the kind of silent wrong answer a byte-order mistake produces.