【问题标题】:How to convert mixed string to bytes?如何将混合字符串转换为字节?
【发布时间】:2021-03-08 13:16:35
【问题描述】:

我有一个要转换为实际字节的字节表示。

例如注意双反斜杠,我正在使用文字反斜杠、x 和 2 位十六进制:

>>> foo=rb"foo\x00"
>>> foo
b'foo\\x00'

eval() 会这样做,但这样做很糟糕:

>>> eval(b"b\"" + foo + b"\"")
b'foo\x00'

我查看了 binascii,但没有看到转换此类数据的方法。这种编码叫什么?

没有编写自己的例程来执行此操作,有没有更简单的方法?

【问题讨论】:

  • 你已经有了字节。只需将其写入文件,然后使用十六进制编辑器读取。在提示符和终端上,python 将为您写一个无法打印的字符的表示(作为转义)。 '\x00' 就是这样的字符之一。
  • 需要以编程方式完成,希望能找到一种优雅的Python 3方式来做到这一点。我似乎不可能手工制作它。

标签: python-3.x encoding hex


【解决方案1】:

类似下面的代码 sn-p 可能会有所帮助:

foo = rb'foo\x00'
bar = eval(repr(foo).replace('\\\\','\\'))
for x in bar:
    print(x, type(x))
102 <class 'int'>
111 <class 'int'>
111 <class 'int'>
0 <class 'int'>

【讨论】:

    猜你喜欢
    • 2019-12-13
    • 1970-01-01
    • 2023-02-26
    • 1970-01-01
    • 1970-01-01
    • 2021-03-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多