gpt4 book ai didi

file - 如何在Crystal中将二进制文件写入文件

转载 作者:行者123 更新时间:2023-12-01 23:31:11 25 4
gpt4 key购买 nike

我有一个 UInt32 数组,将它写入 Crystal lang 中的二进制文件的最有效方法是什么?

现在我正在使用 IO#write_byte(byte : UInt8)方法,但我相信应该有一种方法可以编写比每 1 个字节更大的块。

最佳答案

可以直接写个Slice(UInt8)到任何 IO,这应该比迭代每个项目并一个一个地写入每个字节要快。

诀窍是访问 Array(UInt32)的内部缓冲区作为 Pointer(UInt8)然后将其设为 Slice(UInt8) ,这可以通过一些不安全的代码来实现:

array = [1_u32, 2_u32, 3_u32, 4_u32]

File.open("out.bin", "w") do |f|
ptr = (array.to_unsafe as UInt8*)
f.write ptr.to_slice(array.size * sizeof(UInt32))
end

确保永远不要保留对 ptr 的引用,见 Array#to_unsafe详情。

关于file - 如何在Crystal中将二进制文件写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35247467/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com