在Python中将数字列表转换为包含实际值的字符串

时间:2018-09-28 19:10:42

标签: python list

这是在python中。我是python的新手,但不是编程人员。

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

我想将其转换为格式的字符串

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

列表中的二进制值在字符串中。我可以用蛮力做到这一点,但是必须有一种更好的方法来做到这一点。

3 个答案:

答案 0 :(得分:1)

你在这里

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

答案 1 :(得分:1)

看起来很简单...

>>> 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 \

答案 2 :(得分:1)

这是一个问题...我应该有“ \ x02 \ x00 \ x00 \ x40”等等,而不是“ \ 0x02 \ 0x00 \ 0x00 \ 0x40”等等。问题是“ ** 0 ** x”。因此,错误的是首先在字符串中。

蛮力方法是: x2 =“” 为我在x    x2 = x2 + chr(i)

x2现在是具有正确值的字符串。应该有更好的方法。