有没有简单的方法可以将二进制文件的内容作为二进制字符串读取,将其转换为普通(utf-8)字符串,对其进行一些操作,将其转换为二进制字符串并写入把它变成二进制文件?我尝试做一些简单的事情:
a_file = open('image1.png', 'rb')
text = b''
for a_line in a_file:
text += a_line
a_file.close()
text2 = text.decode('utf-8')
text3 = text2.encode()
a_file = open('image2.png', 'wb')
a_file.write(text3)
a_file.close()
但我得到'Unicode无法解码位置上的字节...'
我做错了什么?
答案 0 :(得分:0)
utf8格式具有足够的结构,随机排列的字节无效UTF-8。最好的方法是简单地处理从文件中读取的字节(可以使用graphics.SetPixelOffsetMode(Gdiplus::PixelOffsetModeHalf); //Gdiplus::Graphics
Gdiplus::Rect shadow(rect.X + rect.Width, rect.Y + cornerRadius, shadowWidth, vSideLength);
Gdiplus::LinearGradientBrush brush(shadow, alpha1, alpha2, 180.f);
brush.SetBlendBellShape(1);
graphics.FillRectangle(&brush, shadow);
一步提取)。二进制字符串(类型text = a_file.read()
)包含您想要的所有字符串方法,甚至包括bytes
或isupper()
等面向文本的字符串方法。然后是swapcase()
,bytearray
类型的可变副本。
如果出于某种原因,确实希望将您的字节转换为bytes
对象,请使用纯{8}编码,例如str
。您将获得 unicode 字符串,这就是您真正想要的。 (UTF-8只是Unicode的编码 - 一个非常不同的东西。)