Python преобразует строку в байты без изменения значений

#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'=' ничего не «преобразуется», объекты python bytes просто используют печатные символы ascii для байтов, которые попадают в диапазон ascii для печати в его строковом представлении (т. Е. при печати).

3. тогда, возможно, моя проблема в чем-то другом, но есть ли какой-нибудь способ, которым я получаю b'x213b' ? или b'x213b' == b'!3b' ?

4. @wenqingqiu да, вы можете попробовать это сами, b'x213b' == b'!3b' оцените, чтобы True