У меня есть следующий код, который пытается преобразовать целочисленное значение в два отдельных байта в массиве байтов.
value = 13183
print("Initial value: ", value)
val_msb = (value >> 8) & 0xFF
val_lsb = value & 0xFF
print("Value MSB:", val_msb, "Value LSB:", val_lsb)
val_arr = bytearray(2);
val_arr[0] = val_msb
val_arr[1] = val_lsb
print("Byte array:", val_arr)
Получение следующего вывода, который не соответствует ожидаемому.
Initial value: 13183
Value MSB: 51 Value LSB: 127
Byte array: bytearray(b'3\x7f')
Я ожидаю, что он создаст окончательный массив байтов как Byte array: bytearray(b'x33\x7f')
Символ «3» имеет код символа 51 (или 0x33). Итак, то, что вы видите там, 3, — это не числовое значение, а символ, в который оно переводится. Если вы сделаете свою последнюю команду
print(list(val_arr))
вы можете видеть, что значения верны.