【问题标题】:Python convert string to null terminated byte stringPython将字符串转换为以空结尾的字节字符串
【发布时间】:2019-11-13 04:30:27
【问题描述】:

我正在尝试将 python 字符串转换为以空字符结尾的字节字符串。我不需要在我的 python 程序中使用这个字符串,但我需要有这种格式的字符串并在其他地方使用这个输出。

但基本上,例如,如果可能,我想以某种方式将字符串"cat" 转换为"\x63\x61\x74"

到目前为止,我无法为这个问题找到合适的解决方案。


我有一个可能的解决方案,但我想知道是否有更好的方法来做到这一点。这只是将十六进制值放在列表中。不是上面的确切格式,而是类似的结果。

text = "asjknlkjsndfskjn"
hexlist = []

for i in range(0, len(str)):
    hexlist.append(hex(ord(str[i:i+1])))

print(hexlist)

【问题讨论】:

  • 所以,为了正确起见:例如,新字符串的第二个元素是x,对吗?

标签: python string hex byte


【解决方案1】:

你试过了吗?

>>> bytes('cat', 'ascii')
b'cat'

对于空终止,只需添加 NUL:

>>> bytes('cat', 'ascii') + b'\x00'
b'cat\x00'

编辑:要将十六进制表示形式存储在字符串中,您可以执行以下操作:

>>> ''.join(['\\'+hex(b)[1:] for b in bytes('cat', 'ascii')])
'\\x63\\x61\\x74'
>>> print(_)
\x63\x61\x74

【讨论】:

  • 我需要结果字符串的格式为十六进制,如"\x63\x61\x74"
  • 已经是了。 b'cat' 表示bytes object or bytestring,与b'\x63\x61\x74' 相同。如果它是你所追求的格式,你可以得到这样的十六进制表示:bytes('cat', 'ascii').hex().
  • @Flengo 什么,正是你想要什么?您想要一个字节字符串,其中包含您以十六进制表示的字节,还是您想要将实际的十六进制表示为字节字符串?
  • 对不起,我应该更清楚我的问题。我需要将十六进制表示形式作为字符串。所以最终,我不需要b'cat',但我需要'\x63\x61\x74' 作为字符串,而不是基于'cat' 或其他任何可能的字符串。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-07
  • 1970-01-01
  • 2019-10-10
  • 2015-03-29
  • 1970-01-01
相关资源
最近更新 更多