мне нужно превратить строку как data = "00000111010110101"
в шестнадцатеричной строки, в этом примере, мне нужно «075A80»Python: Как превратить строку двоичных значений (произвольную длину) в шестнадцатеричные данные?
Вы можете заметить несколько предостережений:
- ведущие нули не должны быть зачищены так шестнадцатеричном (межд (данные, 2)) не работает для меня
- если Len (данные)% 8! = 0 строки должна быть добавлена с нулями до конца с полным байте
После поиска этого форума и взлома вместе разные ответы, это один путь, который я нашел для этого, но он кажется довольно сложным, и я надеюсь, что кто-то еще увидит гораздо более простой способ.
data_hex = "".join([ "%02X" % int("".join(a),2) for a in izip_longest(*(iter(data),)*8, fillvalue='0')])
Спасибо!
Редактировать: Некоторые фоне данных. Базовые данные являются чисто битами, они не представляют собой целое число или другое числовое значение, поэтому ведущие нули являются релевантными и должны быть представлены в результате. Также добавление нулей на (правом) конце не изменяет «значение» в моем случае использования.
Кроме того, я могу использовать только Python 2.7. – DozyBrat
'00000111010110101' bin - это' eb5' hex, поэтому я не уверен, как вы получите '075A80'. – JJJ
'0x075A80' -' 1110101101010000000' в двоичном формате. Похоже, вам не хватает нулей с правой стороны. – Kevin