#python #binary #integer
#питон #двоичный #целое
Вопрос:
Я обрабатываю массивы из 8-битных целых чисел, которые выглядят следующим образом:
ph0 = [[255, 0, 65, 165, 23, 32, 198, 43]]
Я хочу преобразовать массив в целое число таким образом, чтобы двоичное представление элементов в объединенном массиве соответствовало целому числу.
Таким образом, используя приведенный выше пример, его двоичное представление будет:
['0b11111111', '0b00000000', '0b01000001', '0b10100101', '0b00010111', '0b00100000', '0b11000110', '0b00101011']
В конце я хочу целое число, двоичное представление которого будет представлять собой все эти двоичные значения, объединенные вместе. Вот так:
0b1111111100000000010000011010010100010111001000001100011000101011
Это то, что я придумал:
def convertArrayToInt(hashArr):
val = 0
for i in range(len(hashArr[0])-1, -1, -1):
val = (hashArr[0][i])*2**((7-i)*8)
return val
Я могу с уверенностью предположить, что каждый слот не превышает 255 (следовательно, не нужно беспокоиться о слоте, занимающем более 8 бит).
Безопасна ли моя реализация в использовании? Есть ли какие-нибудь идеи получше?
Ответ №1:
У вас есть список int
объектов. Но это можно просто выполнить с помощью:
int.from_bytes(bytes([255, 0, 65, 165, 23, 32, 198, 43]), 'big')