Python: Как вы преобразуете n-биты в основание 64? - PullRequest
0 голосов
/ 15 марта 2011

У меня есть это: struct.pack('I', 0b10101010101100101010001000001000).encode('base64'), что хорошо для преобразования 32 бит в основание 64 ... но есть ли простой способ преобразовать любое количество бит в основание 64?

как где-то между 128и 512?

РЕДАКТИРОВАТЬ: где я нахожусь: Моя оригинальная команда:

>>> struct.pack('I', 0b10101010101100101010001000001000).encode('base64')  
'CKKyqg==\n'

Одним из предложений является использование \ x для шестнадцатеричного числа и преобразование этого ... пока такхорошо.

>>> struct.pack('I', 0b10101010101100101010001000001000).encode('hex')
'08a2b2aa'
>>> '\x08\xa2\xb2\xaa'.encode('base64')
'CKKyqg==\n'

но можно ли сделать то же самое с двоичным файлом?

>>> '\b10101010\b10110010\b10100010\b00001000'.encode('base64')
'CDEwMTAxMDEwCDEwMTEwMDEwCDEwMTAwMDEwCDAwMDAxMDAw\n'
nope =(

Ответы [ 2 ]

4 голосов
/ 15 марта 2011

Если у вас есть двоичная строка произвольной длины, используйте шестнадцатеричные экранированные строки:

'\x00\x01\x02\x03'.encode('base64')

Итак, ваш пример будет:

'\xaa\xb2\xa2\x08'.encode('base64')
1 голос
/ 02 мая 2011

Я написал статью , в которой описывается простое решение на Python, которое можно использовать для преобразования ряда чисел в произвольные числовые базы. Используя предложенное решение, вы можете преобразовать список двоичных цифр в любое представление кодировки, которое вам нравится. Однако обратите внимание, что результат преобразования не будет содержать дополнительных символов, поскольку они просто не нужны. Может быть, это служит вашим потребностям, а может и нет;)

...