Разложить число на байты, для передачи по smbus
Есть число, например 1234. Мне его необходимо разбить на два байта и передать их на другое устройство.
Я пытаюсь разложить так:
number = 1234
bus.write_byte(address, (number >> 8))
bus.write_byte(address, (number & 0xff))
Что я делаю не так? Подобный код, но на языке С, работает корректно.
Ответы (2 шт):
Автор решения: CrazyElf
→ Ссылка
С виду всё работает правильно.
number = 1234
print(hex(number), hex(number >> 8), hex(number & 0xff))
Вывод:
0x4d2 0x4 0xd2
Автор решения: Oleg Bitman
→ Ссылка
Используй следующую конструкцию:
freq2phase = 4294967295
freq2phase = freq2phase.to_bytes(4, byteorder="big", signed=False) #на 4 байта разбиваем число!
По итогу получишь:
b'\xff\xff\xff\xff'