Я предлагаю вам переключить значения на тип байт , чтобы объединить их, а затем переключить обратно на тип int следующим образом:
myList = [0x1A, 0xF3, 0x74, 0xA3]
# Conversion to 'bytes'
a = bytes()
for b in myList:
a += b.to_bytes(1,'big')
# Conversion back to 'int'
a = int.from_bytes(a, 'big')
print(hex(a)) # 0x1af374a3
И вы можете заменить классический цикл for на понимание генератора, переданное в качестве параметра методу join()
, чтобы объединить байтовые элементы. Это все еще читается и немного короче, как показано ниже:
myList = [0x1A, 0xF3, 0x74, 0xA3]
a = b''.join(b.to_bytes(1,'big') for b in myList) # Conversion to 'bytes'
a = int.from_bytes(a, 'big') # Conversion back to 'int'
print(hex(a)) # 0x1af374a3
Обратите внимание, что если целое число в списке ввода превышает 255, то логически выдается ошибка OverflowError: int too big to convert
из-за b.to_bytes(1,'big')
. Конечно, это может быть улучшено путем управления исключением, если это может произойти.
Наконец, я также могу предложить вам решение, использующее умножение на степени 256, просто чтобы показать вам, что оно может быть достигнуто только в одну строку:
myList = [0x1A, 0xF3, 0x74, 0xA3]
a = sum(nb*(256**i) for i,nb in enumerate(reversed(myList)))
print(hex(a)) # 0x1af374a3