File 如何将二进制文件写入Crystal中的文件
我有一个UInt32数组,在Crystal lang中将其写入二进制文件的最有效方法是什么File 如何将二进制文件写入Crystal中的文件,file,binary,crystal-lang,File,Binary,Crystal Lang,我有一个UInt32数组,在Crystal lang中将其写入二进制文件的最有效方法是什么 现在我正在使用IO#write_byte(byte:UInt8)方法,但我相信应该有一种方法可以写入比每1个字节更大的块。您可以直接向任何IO写入片(UInt8),这应该比逐个迭代每个项和写入每个字节更快 诀窍是将数组(UInt32)的内部缓冲区作为指针(UInt8)访问,然后使其成为片(UInt8),这可以通过一些不安全的代码实现: array=[1_u32,2_u32,3_u32,4_u32] 文件.
现在我正在使用
IO#write_byte(byte:UInt8)
方法,但我相信应该有一种方法可以写入比每1个字节更大的块。您可以直接向任何IO写入片(UInt8)
,这应该比逐个迭代每个项和写入每个字节更快
诀窍是将数组(UInt32)
的内部缓冲区作为指针(UInt8)
访问,然后使其成为片(UInt8)
,这可以通过一些不安全的代码实现:
array=[1_u32,2_u32,3_u32,4_u32]
文件.open(“out.bin”,“w”)do | f|
ptr=(array.to_不安全,如UInt8*)
f、 将ptr.写入_片(array.size*sizeof(UInt32))
结束
请确保永远不要保留对
ptr
的引用,有关详细信息,请参阅。如何使用UInt8编写UInt32?你的意思是你正在使用write_字节(末尾有一个s)?目前我正在保留UInt8数组并写入UInt8。但我想最好保留UInt32数组,并将其用于编写