Страницы

Поиск по вопросам

среда, 5 февраля 2020 г.

Склеивание двух чисел в формате hex в python

#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))

Комментариев нет:

Отправить комментарий