【问题标题】:How can I convert a list of hexadecimal strings to a single string with escape characters?如何将十六进制字符串列表转换为带有转义字符的单个字符串?
【发布时间】:2014-04-15 21:08:07
【问题描述】:

我有一个清单:

list = ['0x01','0x02','0x03'] 

但我需要将其转换为具有格式的字符串:

string = "\x01\x02\x03"

如果有人可以帮助我,我真的被困住了。

谢谢。

【问题讨论】:

  • 关于您的问题的两种不同解释似乎正在进行讨论。 Blender 给出了您提出的确切问题的答案,它产生了三个字符串 "\x01\x02\x03"。 iCodez 认为您想要 12 个字符串 r"\x01\x02\x03" 并且您似乎对这个答案感到满意。因此,请您澄清一下您是否打算在您的问题中添加r,如果是,请编辑您的问题。如果没有,请接受 Blender 的回答。

标签: python string list python-2.7 hex


【解决方案1】:

如果基数是 16,int() 实际上会剥离 0x 部分:

>>> int('0x01', 16)
1

所以您需要做的就是将每个元素转换为整数并将其传递给chr()

''.join([chr(int(c, 16)) for c in lst])

【讨论】:

  • 这样做会完全丢失十六进制部分(即前导“x”),并且您没有解决转义字符。
  • 这不应该被否决。它完美地回答了这个问题。可能是问题被问得不正确(我们不知道),但这个答案给出了问题被问方式的正确答案。
  • 是的。 >>> lst = ['0x01','0x02','0x03'] >>> ''.join([chr(int(c, 16)) for c in lst]) '\x01\x02\x03'
  • 啊,你是对的,我的错,我不认为它会返回斜线,我自己也测试了一下。不过,我认为第一个答案更清楚。
  • 这也取决于 OP 想要什么。他想要文字字符'\x01' 还是字符串r'\x01'
猜你喜欢
  • 2013-02-07
  • 1970-01-01
  • 2014-12-04
  • 1970-01-01
  • 2018-01-26
  • 1970-01-01
  • 1970-01-01
  • 2018-01-31
相关资源
最近更新 更多