【发布时间】:2022-01-18 20:42:56
【问题描述】:
我有一个像"b'\\x00\\x01\\x02\\x03\\x04'" 这样的字符串,它代表字节,我想将它转换成实际的bytes。
我试过这样做:
string = "b'\\x00\\x01\\x02\\x03\\x04'"
data = bytes(string[2:-1], "utf-8") # Removing quotes and the b
print(data, type(data))
>>> b'\\x00\\x01\\x02\\x03\\x04' <class 'bytes'>
但data 字节有双斜杠。
注意:
它使用 eval 工作,但出于安全原因,我不会使用它。
【问题讨论】:
-
使用
eval,但是你从哪里得到这个字符串?您是否碰巧以文本模式将字节对象保存到文件中?请注意,您应该真正修复此字符串的 source 。此外,ast.literal_eval在不受信任的输入上更安全 -
"但出于安全原因" 安全原因是什么?你从哪里得到字符串?
-
@juanpa.arrivillaga 是写入文件的纯文本。