2024-09-29 06:34:47 发布
网友
我尝试用二进制文件构建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)
这将导致:
上面的问题是什么?在
FWIW,我用的是IronPython
通过查看IronPython's ^{} source code我可以看到extend方法在内部调用GetBytes方法:
extend
GetBytes
public void extend(object seq) { extend(GetBytes(seq)); }
实际上,GetBytes方法在给定string时被硬连接到except。在
string
except
因此,我建议使用^{}函数将从文件读取的字节转换为0-255范围内的整数值,然后使用append将其插入bytearray。在
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的人可以提供更优雅的解决方案。在
希望这有帮助!在
通过查看IronPython's ^{} source code 我可以看到
extend
方法在内部调用GetBytes
方法:实际上,
^{pr2}$GetBytes
方法在给定string
时被硬连接到except
。在因此,我建议使用^{} 函数将从文件读取的字节转换为0-255范围内的整数值,然后使用append将其插入
bytearray
。在你的代码可以保持这样:
这有点难看,我认为他们是按照一些.NET库的限制来实现这一点的。在
也许更熟悉IronPython的人可以提供更优雅的解决方案。在
希望这有帮助!在
相关问题 更多 >
编程相关推荐