#python #python-3.x #string #byte
#python #python-3.x #строка #байт
Вопрос:
у меня есть строка, например:
a = '031000060002043DCCCCCD213B'
и я хочу получить байт, подобный:
b'x03x10x00x06x00x02x04x3DxCCxCCxCDx213B'
(последние четыре символа я не хочу разделять)
но, как string '3d'
и '21'
всегда преобразовывались из-за ascii в b'='
и b'!'
, чего я не хочу, как это можно решить?
Заранее спасибо!!
Комментарии:
1. Именно так представлены байты, когда вы выводите их на экран , они все еще остаются байтами.
Ответ №1:
bytes
объекты предоставляют удобный метод для этого, .fromhex
поэтому вы можете просто использовать:
>>> bytes.fromhex(a[:-4]) a[-4:].encode()
b'x03x10x00x06x00x02x04=xccxccxcd213B'
Комментарии:
1. но чего я не хочу, так это как в строке конвертировать ‘3d’ в ‘=’, чего я хочу, так это иметь непосредственно b ‘ x3d’
2. @wenqingqiu они точно равны , т.Е.
b'x3d' == b'='
ничего не «преобразуется», объекты pythonbytes
просто используют печатные символы ascii для байтов, которые попадают в диапазон ascii для печати в его строковом представлении (т. Е. при печати).3. тогда, возможно, моя проблема в чем-то другом, но есть ли какой-нибудь способ, которым я получаю
b'x213b'
? илиb'x213b' == b'!3b'
?4. @wenqingqiu да, вы можете попробовать это сами,
b'x213b' == b'!3b'
оцените, чтобыTrue