使用extend向bytearray添加字节时出现“unicode参数不带编码”

2024-09-29 06:34:47 发布

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

我尝试用二进制文件构建bytearray,如下所示:

myArr = bytearray()
with open(r"C:\Users\User\MyFileName.bin", "rb") as f:
        byte = f.read(1)
        while byte:
            myArr.extend(byte)
            byte = f.read(1)

这将导致:

^{pr2}$

上面的问题是什么?在

FWIW,我用的是IronPython


Tags: 文件readbinaswith二进制openbyte
1条回答
网友
1楼 · 发布于 2024-09-29 06:34:47

通过查看IronPython's ^{} source code我可以看到extend方法在内部调用GetBytes方法:

public void extend(object seq) {
    extend(GetBytes(seq));
}

实际上,GetBytes方法在给定string时被硬连接到except。在

^{pr2}$

因此,我建议使用^{}函数将从文件读取的字节转换为0-255范围内的整数值,然后使用append将其插入bytearray。在

你的代码可以保持这样:

myArr = bytearray()
with open(r"C:\Users\User\MyFileName.bin", "rb") as f:
    byte = f.read(1)
    while byte:
        myArr.append(ord(byte))
        byte = f.read(1)

这有点难看,我认为他们是按照一些.NET库的限制来实现这一点的。在

也许更熟悉IronPython的人可以提供更优雅的解决方案。在

希望这有帮助!在

相关问题 更多 >