是否有像我们在C/C++中那样将二进制数据写入二进制文件的简单方法?例如,如何在不使用花式数学的情况下创建一个带有序列化4字节整数值的4字节文件?在Ruby中写入二进制文件
回答
您可以使用Array#pack和String#unpack转换为和来自二进制表示。将它们与IO#write和IO#read结合起来,然后离开。
还有Marshal.dump
和Marshal.load
您可以使用的方法。
以下是链接:http://en.wikipedia.org/wiki/Serialization#Ruby。
而另一个将数据保存到文件:http://rubylearning.com/satishtalim/object_serialization.html。
这工作正常,但我仍然无法使用这个4字节的文件:File.open('test.bin','wb'){| file |文件“Marshal.dump(12345)},我得到6字节的文件。问题是我需要创建一个专有格式的二进制文件,这个文件由记录组成,每个文件都是固定长度的C型记录,整数,字节等。 感谢您真正快速的回答。 – 2009-06-02 21:13:26
不用担心。 Pesto的答案看起来很有希望。 – 2009-06-02 21:39:22
在我卑微的看法中,ruby并不是为这样的任务而设计的。如果你必须写很多的二进制文件,最简单的方法是编写一些c函数,并从ruby中调用它们,这很容易使用swig。我现在正在做同样的事情来编写一个raid模拟器。
我最近有一个类似的工作问题。我用了BinData宝石,它工作得很好。 你只是这样做:
File.open('test.bin', 'wb') {|file| BinData::Int32be.new(12345).write(file) }
,你不需要记住任何Array#pack
代码。
- 1. 写入二进制文件
- 2. 写入二进制文件?
- 3. 写入二进制文件
- 4. 写入二进制文件
- 5. 在Java中写入二进制文件
- 6. 在PROLOG中写入二进制文件
- 7. Ruby grep二进制文件?
- 8. 二进制文件和写入结构
- 9. 将0写入二进制文件C++
- 10. 将二进制数据写入文件
- 11. 写入二进制文件python
- 12. C++二进制文件写入
- 13. 读取和写入二进制文件
- 14. 写二进制文件
- 15. 解析Ruby中的二进制文件
- 16. 在C中的二进制文件中写入字节0
- 17. 将原始二进制文件写入C中文件
- 18. 将十六进制和二进制值写入文件
- 19. 在Qt中读取和写入二进制文件
- 20. 在Nim中写入/读取二进制文件
- 21. 在Python中以int形式写入二进制文件
- 22. 在C++中读取和写入int到二进制文件
- 23. 在Python中以二进制形式写入整数文件
- 24. 如何在Python中将BitArray写入二进制文件
- 25. 在C++中读取和写入二进制文件
- 26. 如何在C#中将对象写入二进制文件?
- 27. 在C++和C中写入二进制文件#
- 28. 如何在PowerShell中将二进制Stream对象写入文件?
- 29. 将C写入的二进制文件导入到Matlab中
- 30. 如何在ruby中编写二进制文字?
是的,我认为你是这个问题的更好答案! +1 – 2009-06-02 21:18:29
感谢您的回答,这对我有效。 – 2009-06-03 16:17:07