2016-08-30 4 views
0

сегодня я столкнулся со следующей проблемой. Я могу объяснить это лучше с обратной целью: Скажем, мы имеем следующую base64-переменную,строка в base64 байт, точно с теми же буквальными символами

b64_var = b'aGVsbG8gd29ybGQ=' 

Представьте себе, что мы хотим, чтобы это не расшифровать его в строку объекта питона, а именно,

base64.b64decode(b64_var).decode('utf-8') 
>>> 'hello world' 

но буквальные эквивалентные символы в строке вместо этого,

repr(b64_var)[1:] 
>>> 'aGVsbG8gd29ybGQ=' 

Хорошо, теперь это мой вопрос. Я хочу, чтобы построить функцию, которая выполняет как раз наоборот,

'aGVsbG8gd29ybGQ=' -> b'aGVsbG8gd29ybGQ=' (base64-obj) ??? 

Я получил stucked, я не знаю, как это сделать .. Любое предложение? Заранее спасибо.

+1

В Python 3, 'b'aGVsbG8gd29ybGQ = '' не '', это строка байтов, также известная как ['bytes' ] (https://docs.python.org/3/library/functions.html#bytes) объекта (или 'bytesarray'). – martineau

ответ

0

Это делает то, что вы хотите?

b64_var = b'aGVsbG8gd29ybGQ=' 

print(repr(b64_var))   # b'aGVsbG8gd29ybGQ=' 
print(repr(b64_var)[1:])  # 'aGVsbG8gd29ybGQ=' 
print('b' + repr(b64_var)[1:]) # b'aGVsbG8gd29ybGQ=' 
+0

Спасибо @martineau за попытку. К сожалению, моя проблема, которая будет решена, скорее всего обратная. Но вы дали мне ключ: «b64_var» - это просто «класс байтов», а не специальный, экспортированный из модуля base64. Я собираюсь опубликовать решение. Благодарю. –

0

Хорошо, я нашел проблему, это было проще, чем я ожидал.

Сначала я собираюсь попытаться выяснить, что на самом деле я хотел сделать,

str_var = 'aGVsbG8gd29ybGQ='    # str_var: string 
b64_var = fun_str_2_b64samechars(str_var) # b64_var: bytes (b64) 

консоли,

b64_var 
>>>b'aGVsbG8gd29ybGQ=' 

Моя цель состояла в том, чтобы угадать, как построить эту fun_str_2_b64samechars функцию. А вот это точно bytes(str_var,'utf-8'),

bytes('aGVsbG8gd29ybGQ=','utf-8') 
>>>b'aGVsbG8gd29ybGQ=' 

Вероятно, это произошло потому, что я думал, что это был какой-то класс base64 до тех пор, как я использовал модуль base64 (из-за этого я редактировал название). Спасибо за помощь, и я надеюсь, что это может быть полезно для кого-то :)