Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File 如何将二进制文件写入Crystal中的文件_File_Binary_Crystal Lang - Fatal编程技术网

File 如何将二进制文件写入Crystal中的文件

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] 文件.

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


现在我正在使用
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数组,并将其用于编写