将ascii转换为二进制并写入二进制文件python3.x

2024-09-27 21:32:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我想读取二进制文件(如.bmp或.jpg),并将每个二进制数据转换为ascii并进行乘法(如ascii*2),然后转换回二进制格式并写入新文件。在

我写的程序如下

    filename = input("enter file to read: ")
    readfile = filename + ".bmp"
    writefilebmp = filename + '1' + ".bmp"
    fr = open(readfile,"rb");
    fwbmp = open(writefilebmp,"wb");
    bytes_read = fr.read(1024)
    for b in bytes_read:
        print(b,end='')
        data = b*2;
        fwbmp.write(data)
    fr.close()
    fwbmp.close()

但是我得到了下面的错误

类型错误:“int”不支持缓冲区接口

注意:一旦我的解决方案,我将修改代码跳过bmp或jpeg头

修改

^{pr2}$

Tags: 文件closereaddatabytes错误ascii二进制
1条回答
网友
1楼 · 发布于 2024-09-27 21:32:21

你在字节上循环,这给了你整数。转换回字节以写入二进制文件:

fwbmp.write(bytes([data % 256]))

这里需要使用模256将结果整型值限制为允许的值。您也可以用min()将值限制在255:

^{pr2}$

或者,如果加倍导致溢出,则可以写入两个字节:

if data > 255:
    fwbmp.write(bytes(divmod(data, 256)))
else:
    fwbmp.write(bytes([data]))

或者总是生成2个字节,不管第一个字节是0x01或{}:

fwbmp.write(bytes(divmod(data, 256)))

你需要决定你的“翻番”在产出方面意味着什么。在

相关问题 更多 >

    热门问题