#python #hex
Всем привет! Реализовал код который выводит два значения 0xffff и 0xf38c. def main(): while True: id_device = instrument.read_registers(0x0006, 2) id_device.reverse() for i in id_device: print(hex(i)) Не могу их "склеить", чтоб получилось вот так - 0xfffff38С (потом преобразую в десятичное число). Помогите пожалуйста.
Ответы
Ответ 1
>>> (0xffff << 16) | 0xf38c 4294964108 >>> hex(_) '0xfffff38c' Если у вас на входе 4 байта, то можно напрямую их в int превратить (Питон 3): >>> int.from_bytes(b'\xff\xff\xf3\x8c', 'big') 4294964108 или: >>> import struct >>> struct.unpack('!I', b'\xff\xff\xf3\x8c')[0] 4294964108 Если вы хотите просто hex представление в виде строки получить (Питон 3): >>> b'\xff\xff\xf3\x8c'.hex() 'fffff38c'Ответ 2
Если в id_device числа двухбайтовые, то можно использовать следующий код: def main(): while True: id_device = instrument.read_registers(0x0006, 2) shift=0 result=0 for i in id_device: result += i << shift shift += 16 print(hex(result))
Комментариев нет:
Отправить комментарий