Разложить число на байты, для передачи по 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'
→ Ссылка