я иллюстрируют случай для того, где к = 2 (так, нижние 12 цифр)Лучший способ кодирования base64 последние 6k биты целого числа питона
import base64
# Hi
# 7 - 34
# 000111 - 100010
# 0001 - 1110 - 0010 = 0x1E2 = 482
# 1
integer = int(bin(482)[-12:] + '0' * 20, 2)
encoded = base64.b64encode(base64.b16decode('{0:08X}'.format(integer)))
print encoded
# 2
encoded = base64.b64encode(base64.b16decode('{0:08X}'.format(482 << 20)))
print encoded
Оба вывода HiAAAA == по желанию
Идеальная ссылка для вашего удобства: http://ideone.com/O73kQs
Интуитивно это очень ясно, и я предпочитаю # 2 совсем немного. Одна вещь, которая «раздражает» меня около # 1, заключается в том, что если целые числа в python не являются 32 битами, тогда у меня проблемы. Как я могу получить правильный размер int? (Всего питон новичок вопрос?) (Редактирование: да, по-видимому, новичок-иша вопрос How can i determine the exact size of a type used by python)
Было бы хорошо, однако, если есть способ, чтобы просто сделать что-то вроде
encoded = base64.b64encode('{0:08X}'.format(482 << 20))
Кроме того, как я могу перейти от
bin(1)
которая равна
'0b1'
к двоичном буквальный
0b1
Наверное, я просто надеялся, что что-то вроде «str (0b100001)« Мог бы дать мне »!» а не «100001». =/ –
'chr (0b100001)' должен ... но я не видел, что где-нибудь в вашем вопросе ... –
Нет, потому что я искал, чтобы превратить его в строку, а не только персонаж (который, я полагаю, я мог бы достичь по понятию списка?) В принципе, мой вопрос ... что лучший способ интерпретировать наименее значимые 12 бит целого числа python (и сколько бы нулей мне нужно для заполнения) в качестве строки ascii? –