Значение, которое у вас уже есть, - это именно то значение, которое вы хотите. От комментария:
Я использовал функцию байтов, потому что хочу конкатцировать результат base64.b64decode (coded_string) с еще одним байтом в конце.
bytes([65])
создает bytes
объект с помощью одного байта с числовым значением 65
. То, что означает это число, зависит от того, как вы интерпретируете байты.
Дело в том, что его repr
b'A'
не имеет отношения к делу. Фактически это значение - это тот, который вы хотите. Но repr
объекта bytes
, как объясняет the docs, использует формальный формат bytes
для удобства. Любые байты, который соответствует печати ASCII символов получают представлены в виде этот символа, несколько общих значений получить представлены обратный слеш как \n
, и все остальное, как шестигранная побег, все в пределах b'…'
Итак, repr(bytes([65]))
является b'A'
, потому что байты 65
является печатным символом ASCII A
.
Если вы хотите, чтобы получить строку с шестнадцатеричным представлением числа 65
, вы можете использовать hex
функция или, если вы хотите иметь больший контроль над форматированием, в format
функции:
>>> hex(65)
'0x41'
>>> format(65, '02x')
'41'
Но это не то, что вы хотите здесь. Вы хотите значение b'A'
, и у вас уже есть это.
Почему вы используете 'bytes', если хотите' hex'? 'hex (65) == '0x41'' ... Также обратите внимание, что ваша проблема ** совсем не ** с оператором' & ', который дает ожидаемый результат (' 65'). – jonrsharpe
bytes() преобразуется в ascii. используйте hex(), как указано выше. – cbz
Вы хотите просто напечатать шестнадцатеричное значение? – thefourtheye