Преобразовать список чисел в строку в Python, содержащую фактические значения - PullRequest
0 голосов
/ 28 сентября 2018

Это на питоне.Я новичок в Python, но не в программировании.

x = [2, 0, 0 , 0x40, 0x25, 6, 3]

Я хочу превратить его в строку в формате

x2 = "\0x02\0x00\0x00\0x40\0x25\0x06\0x03"

Двоичные значения из списка находятся встрока.Я могу сделать это грубой силой, но должен быть лучший способ сделать это.

Ответы [ 3 ]

0 голосов
/ 28 сентября 2018

Кажется достаточно простым ...

>>> print(''.join(r'\0x'+'%02x'%i for i in x))
\0x02\0x00\0x00\0x40\0x25\0x06\0x03

Обратите внимание на использование «print» - если вы сообщаете о самой строке, она, по-видимому, удваивает «\» при ее отображении:

>>> ''.join(r'\0x'+'%02x'%i for i in x)
'\\0x02\\0x00\\0x00\\0x40\\0x25\\0x06\\0x03'

однако, посмотрите на самих персонажей, вы увидите, что это проблема оболочки / отображения:

>>> x2 = ''.join(r'\0x'+'%02x'%i for i in x)
>>> print x2[0], x2[1], x2[2], x2[3], x2[4], x2[5]
\ 0 x 0 2 \
0 голосов
/ 29 сентября 2018

Вот одна проблема ... У меня должно было быть "\ x02 \ x00 \ x00 \ x40" и так далее вместо "\ 0x02 \ 0x00 \ 0x00 \ 0x40" и так далее.Проблема была "** 0 ** х".Таким образом, неправильная вещь была в строке в первую очередь.

Метод грубой силы: x2 = "" для i в x x2 = x2 + chr (i)

x2 теперьстрока с правильными значениями.Должен быть лучший способ.

0 голосов
/ 28 сентября 2018

Вот, пожалуйста,

x = [2, 0, 0 , 0x40, 0x25, 6, 3]
x2 = ''

for num in x:
    x2 += '\\0x{:02x}'.format(num)

>>> print(x2)
\0x02\0x00\0x00\0x40\0x25\0x06\0x03
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...