是否有像我们在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. 在TideSDK中写入二进制文件
- 6. 在Xcode中写入二进制文件
- 7. 在Java中写入二进制文件
- 8. 在PROLOG中写入二进制文件
- 9. 在Julia中写入二进制文件
- 10. 在R中写入二进制文件
- 11. 写入二进制文件在C++
- 12. Ruby grep二进制文件?
- 13. 将位写入二进制文件
- 14. 将cv :: Mat写入二进制文件?
- 15. 二进制文件和写入结构
- 16. HTML5二进制文件写入w/Base64
- 17. 读取和写入二进制文件
- 18. 写入二进制文件python
- 19. 写入原始二进制文件java
- 20. 将0写入二进制文件C++
- 21. Python:将int写入二进制文件
- 22. 写入二进制文件到.xlsx
- 23. C++二进制文件写入
- 24. 使用C写入二进制文件#
- 25. 写入.bin二进制文件
- 26. 将二进制数据写入文件
- 27. 在Delphi中编写二进制文件
- 28. 写二进制文件
- 29. 解析Ruby中的二进制文件
- 30. 在C中的二进制文件中写入字节0
是的,我认为你是这个问题的更好答案! +1 – 2009-06-02 21:18:29
感谢您的回答,这对我有效。 – 2009-06-03 16:17:07