Написать бинарный файл в Ruby - PullRequest
29 голосов
/ 03 июня 2009

Есть ли простой способ записать двоичные данные в двоичный файл, как мы это делали в C / C ++? Например, как я могу создать 4-байтовый файл с сериализованным 4-байтовым целочисленным значением без использования причудливой математики?

Ответы [ 4 ]

33 голосов
/ 03 июня 2009

Вы можете использовать Array # pack и String # unpack для преобразования в двоичные представления и из них. Объедините их с IO #, пишите и IO #, прочитайте , и все готово.

24 голосов
/ 04 февраля 2011

У меня недавно была похожая проблема на работе. Я использовал камень BinData , и он сработал. Вы просто делаете что-то вроде:

File.open('test.bin', 'wb') {|file| BinData::Int32be.new(12345).write(file) }

и вам не нужно запоминать коды Array#pack.

3 голосов
/ 03 июня 2009

Есть методы Marshal.dump и Marshal.load, которые вы можете использовать.

Вот ссылка: http://en.wikipedia.org/wiki/Serialization#Ruby.

И еще один, который сохраняет данные в файл: http://rubylearning.com/satishtalim/object_serialization.html.

0 голосов
/ 18 июля 2009

По моему скромному мнению, рубин не был создан для таких задач. Если вам приходится много писать в двоичные файлы, было бы проще написать для этого некоторые функции c и вызывать их из ruby, что довольно просто с помощью swig. Сейчас я делаю то же самое, чтобы написать симулятор рейда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...