是否有一种将二进制数据写入二进制文件的简单方法,就像我们以前在C / C ++中所做的那样?例如,如何在不使用花哨数学的情况下创建具有序列化4字节整数值的4字节文件?
答案 0 :(得分:32)
您可以使用Array#pack和String#unpack转换为二进制表示形式。将它们与IO#write和IO#read合并,然后离开。
答案 1 :(得分:23)
我最近遇到了类似的工作问题。我使用了BinData宝石,它起了作用。 你只需做一些事情:
File.open('test.bin', 'wb') {|file| BinData::Int32be.new(12345).write(file) }
,您无需记住任何Array#pack
代码。
答案 2 :(得分:3)
您可以使用Marshal.dump
和Marshal.load
种方法。
这是一个链接:http://en.wikipedia.org/wiki/Serialization#Ruby。
另一个将数据保存到文件:http://rubylearning.com/satishtalim/object_serialization.html。
答案 3 :(得分:-4)
在我的拙见中,红宝石不是为了这样的任务而做的。如果你必须经常写二进制文件,最简单的方法是为它编写一些c函数并从ruby中调用它们,这很容易使用swig。我现在正在做同样的事情来编写raid模拟器。