Pernahkah Anda menemukan diri Anda menulis kode seperti ini?
io = File . open ( ... )
len = io . read ( 2 ) . unpack ( "v" )
name = io . read ( len )
width , height = io . read ( 8 ) . unpack ( "VV" )
puts "Rectangle #{ name } is #{ width } x #{ height } "
Jelek, melanggar KERING dan tidak terasa seperti Ruby.
Ada cara yang lebih baik. Begini cara Anda menulis di atas menggunakan BinData.
class Rectangle < BinData :: Record
endian :little
uint16 :len
string :name , :read_length => :len
uint32 :width
uint32 :height
end
io = File . open ( ... )
r = Rectangle . read ( io )
puts "Rectangle #{ r . name } is #{ r . width } x #{ r . height } "
BinData menyediakan cara deklaratif untuk membaca dan menulis data biner terstruktur.
Ini berarti pemrogram menentukan format data binernya, dan BinData menentukan cara membaca dan menulis data dalam format ini. Ini adalah alternatif yang lebih mudah (dan lebih mudah dibaca) dibandingkan metode #pack
dan #unpack
ruby.
BinData memudahkan pembuatan tipe data baru. Ini mendukung semua tipe data primitif umum yang ditemukan dalam format data biner terstruktur. Dukungan untuk bidang panjang dependen dan variabel sudah ada di dalamnya.
$ gem install bindata
Panduan BinData.
Jika Anda mempunyai pertanyaan / laporan bug / saran, silakan menghubungi saya (Dion Mendel) melalui email di [email protected]