【发布时间】:2018-09-02 08:11:46
【问题描述】:
如何在不更改数据的情况下将字节转换为字符串?
例如
输入:file_data = b'\xb4\xeb7s\x14q[\xc4\xbb\x8e\xd4\xe0\x01\xec+\x8f\xf8c\xff\x00 \xeb\xff'
输出:'\xb4\xeb7s\x14q[\xc4\xbb\x8e\xd4\xe0\x01\xec+\x8f\xf8c\xff\x00 \xeb\xff'
我想用StringIO和一些额外的数据写一个图像数据,下面是我的代码sn-p,
img_buf = StringIO()
f = open("Sample_image.jpg", "rb")
file_data = f.read()
img_buf.write('\r\n' + file_data + '\r\n')
这适用于 python 2.7,但我希望它适用于 python 3.4。
在读取操作file_data = f.read() 时返回字节对象数据类似这样
b'\xb4\xeb7s\x14q[\xc4\xbb\x8e\xd4\xe0\x01\xec+\x8f\xf8c\xff\x00 \xeb\xff'
使用img_buf 写入数据时,它只接受字符串数据,因此无法使用一些附加字符写入file_data。
所以我想将file_data 转换为 String 对象,而不更改其数据。像这样的
'\xb4\xeb7s\x14q[\xc4\xbb\x8e\xd4\xe0\x01\xec+\x8f\xf8c\xff\x00 \xeb\xff'
这样我就可以连接和写入图像数据。
我不想解码或编码数据。任何建议都会对我有所帮助。提前致谢。
【问题讨论】:
-
您是在问如何将字节数据转换为字符串?只是
my_string = file_data.decode('utf-8')? (意识到解码实际上是将字节转换为字符串......你确定你不想解码它吗?) -
my_string = file_data.decode('utf-8')给出错误UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb4 in position 0: invalid start byte -
我不会尝试将其作为重复项关闭,因为我还不明白您想要什么,但是stackoverflow.com/questions/13837848/… 是否解决了您的问题?
-
其实,我会后退一点。请阅读How to Ask。您的标题提到“图像的字节数据”。这可能是您正在加载的 64 位编码图像数据。使用适当的函数,您可以将此数据转换为图像。为什么你希望它是一个字符串?你能edit你的问题告诉我们你到底想用它做什么吗?
-
您需要更好地解释“不更改数据”的含义。数据不变;就像您使用解码时的解释方式一样。我将把它留在这里作为推荐阅读,并祝你好运。 docs.python.org/3.3/howto/unicode.html
标签: python python-3.x