将数字列表转换为Python中包含实际值的字符串
这是用python编写的。我不熟悉python,但不熟悉编程将数字列表转换为Python中包含实际值的字符串,python,list,Python,List,这是用python编写的。我不熟悉python,但不熟悉编程 x=[2,0,0,0x40,0x25,6,3] 我想把它转换成一个字符串的格式 x2=“\0x02\0x00\0x00\0x40\0x25\0x06\0x03” 列表中的二进制值位于字符串中。我可以用蛮力做到,但必须有更好的方法 给你 x = [2, 0, 0 , 0x40, 0x25, 6, 3] x2 = '' for num in x: x2 += '\\0x{:02x}'.format(num) >>&
x=[2,0,0,0x40,0x25,6,3]
我想把它转换成一个字符串的格式
x2=“\0x02\0x00\0x00\0x40\0x25\0x06\0x03”
列表中的二进制值位于字符串中。我可以用蛮力做到,但必须有更好的方法 给你
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
给你
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
看起来很简单
>>> 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'
但是,看看字符本身,您会发现这是一个shell/显示问题:
>>> 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 \
看起来很简单
>>> 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'
但是,看看字符本身,您会发现这是一个shell/显示问题:
>>> 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 \
这里有一个问题。。。我应该有“\x02\x00\x00\x40”等等,而不是“\0x02\0x00\0x00\0x40”等等。问题是“**0**x”。所以一开始就错了 蛮力法是: x2=“” 对于x中的i x2=x2+chr(一)
x2现在是一个具有正确值的字符串。应该有更好的办法。这里有一个问题。。。我应该有“\x02\x00\x00\x40”等等,而不是“\0x02\0x00\0x00\0x40”等等。问题是“**0**x”。所以一开始就错了 蛮力法是: x2=“” 对于x中的i x2=x2+chr(一)
x2现在是一个具有正确值的字符串。应该有更好的方法。您的“暴力”方法是什么样子的?为什么要字符串中的所有
\0
sstruct.pack
可能是您想要的。请参见下面的答案“暴力”方法是什么样子的?为什么要字符串中的所有\0
sstruct.pack
可能就是您想要的。下面是我的答案。您的尝试很好,但可能需要稍作更改。输出包含\0x2,而不是\0x02。我不知道它们是否相等。您的字符串后面有一个反斜杠字符和一个零字符,但OP的示例中有一个包含文本空字符的字符串。我编辑了我的答案以说明格式。答案现在应该是完整的。感谢您指出:)'\\'+“0x{:02x}.format(num)
=“\\0x{:02x}.format(num)
和Python 3.6+f“\\0x{num:02x}”
谢谢大家。我想我们快到了。输出字符串将只包含两个可打印字符。0x40映射到“@”,0x25映射到“%”。我想要字符串中的空值、ascii etx和stx等。您的尝试很好,但可能需要稍作更改。输出包含\0x2,而不是\0x02。我不知道它们是否相等。您的字符串后面有一个反斜杠字符和一个零字符,但OP的示例中有一个包含文本空字符的字符串。我编辑了我的答案以说明格式。答案现在应该是完整的。感谢您指出:)'\\'+“0x{:02x}.format(num)
=“\\0x{:02x}.format(num)
和Python 3.6+f“\\0x{num:02x}”
谢谢大家。我想我们快到了。输出字符串将只包含两个可打印字符。0x40映射到“@”,0x25映射到“%”。我想要字符串中的空值、ascii etx和stx等。字符串中应该只有两个可打印字符,一个“@”映射到“0x40”,一个“%”映射到0x25。我想要字符串中的空字符和其他不可打印字符。字符串中应该只有两个可打印字符,一个“@”映射到“0x40”,一个“%”映射到0x25。我想要字符串中的空字符和其他不可打印字符。