有没有一种简单的方法可以像在C/C++中那样将二进制数据写入二进制文件?例如,我如何创建一个带有序列化的4字节整数值的4字节文件,而不使用花哨的数学?
yduiuuwa1#
你可以使用Array#pack和String#unpack来转换二进制表示,再合并IO#write和IO#read,就可以了。
4c8rllxm2#
我最近在工作中遇到了类似的问题。我使用了BinData gem,它工作得很好。你只需做一些如下的事情:
File.open('test.bin', 'wb') {|file| BinData::Int32be.new(12345).write(file) }
你不需要记住任何Array#pack代码。
Array#pack
9njqaruj3#
您可以使用Marshal.dump和Marshal.load方法。这里有一个链接:www.example.com网站。http://en.wikipedia.org/wiki/Serialization#Ruby.另一个将数据保存到文件:http://rubylearning.com/satishtalim/object_serialization.html.
Marshal.dump
Marshal.load
qaxu7uf24#
存在用于写入二进制数据的文件#binwrite:
File.binwrite("test.bin", my_binary_data)
vh0rcniy5#
在我看来,ruby并不是为这样的任务而生的,如果你需要写很多的二进制文件,最简单的方法就是写一些c函数,然后从ruby中调用它们,使用swig很容易,我现在正在做同样的事情来写一个raid模拟器。
5条答案
按热度按时间yduiuuwa1#
你可以使用Array#pack和String#unpack来转换二进制表示,再合并IO#write和IO#read,就可以了。
4c8rllxm2#
我最近在工作中遇到了类似的问题。我使用了BinData gem,它工作得很好。你只需做一些如下的事情:
你不需要记住任何
Array#pack
代码。9njqaruj3#
您可以使用
Marshal.dump
和Marshal.load
方法。这里有一个链接:www.example.com网站。http://en.wikipedia.org/wiki/Serialization#Ruby.
另一个将数据保存到文件:http://rubylearning.com/satishtalim/object_serialization.html.
qaxu7uf24#
存在用于写入二进制数据的文件#binwrite:
vh0rcniy5#
在我看来,ruby并不是为这样的任务而生的,如果你需要写很多的二进制文件,最简单的方法就是写一些c函数,然后从ruby中调用它们,使用swig很容易,我现在正在做同样的事情来写一个raid模拟器。