Есть ли простой способ записи двоичных данных в двоичный файл, как мы делали в C/С++? Например, как я могу создать 4-байтовый файл с сериализованным 4-байтовым целочисленным значением без использования причудливой математики?
Запись двоичного файла в Ruby
Ответ 1
Вы можете использовать Array # pack и String # unpack для преобразования в и из двоичных представлений. Объедините их с IO # write и IO # read, и прочь вы идете.
Ответ 2
Недавно у меня была аналогичная проблема для работы. Я использовал BinData gem, и это сработало. Вы просто делаете что-то вроде:
File.open('test.bin', 'wb') {|file| BinData::Int32be.new(12345).write(file) }
и вам не нужно запоминать какие-либо коды Array#pack
.
Ответ 3
Существуют методы Marshal.dump
и Marshal.load
, которые вы можете использовать.
Здесь ссылка: http://en.wikipedia.org/wiki/Serialization#Ruby.
И еще один, который сохраняет данные в файл: http://rubylearning.com/satishtalim/object_serialization.html.
Ответ 4
В моем скромном обращении рубин не был создан для таких задач. Если вам приходится много писать в двоичных файлах, было бы проще написать некоторые c-функции для этого и вызвать их из ruby, что довольно просто с помощью swig. Я делаю то же самое в настоящий момент, чтобы написать симулятор рейдов.