这是在python中。我是python的新手,但不是编程人员。
x = [2, 0, 0 , 0x40, 0x25, 6, 3]
我想将其转换为格式的字符串
x2 = "\0x02\0x00\0x00\0x40\0x25\0x06\0x03"
列表中的二进制值在字符串中。我可以用蛮力做到这一点,但是必须有一种更好的方法来做到这一点。
答案 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现在是具有正确值的字符串。应该有更好的方法。