data = "BZh91AY&SY\x94$|\x0e\x00\x00\x00\x81\x00\x03$ \x00!\x9ah3M\x13<]\xc9\x14\xe1BBP\x91\xf08"
File.open("data.bz2", "wb") do |f|
f.write(data)
end
write
принимает строку в качестве аргумента, и у вас есть строка. Нет необходимости сначала распаковывать эту строку. Вы используете Array#pack
для преобразования массива, например числа в двоичную строку, которую вы можете записать в файл. Если у вас уже есть строка, вам не нужно упаковывать. Вы используете unpack, чтобы преобразовать такую двоичную строку обратно в массив после чтения ее из файла (или где-либо еще).
Также обратите внимание, что при использовании File.open
без блока и без сохранения объекта File, такого как File.open(arguments).some_method
, вы пропускаете дескриптор файла.