bindata
1.0.0
คุณเคยพบว่าตัวเองเขียนโค้ดแบบนี้หรือไม่?
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 } "
มันน่าเกลียด ละเมิด DRY และไม่รู้สึกเหมือน Ruby
มีวิธีที่ดีกว่า ต่อไปนี้เป็นวิธีเขียนข้อความข้างต้นโดยใช้ 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 มอบวิธี การประกาศ ในการอ่านและเขียนข้อมูลไบนารีที่มีโครงสร้าง
ซึ่งหมายความว่าโปรแกรมเมอร์จะระบุ รูป แบบของข้อมูลไบนารี่ และ BinData จะหา วิธี อ่านและเขียนข้อมูลในรูปแบบนี้ มันเป็นทางเลือกที่ง่ายกว่า (และอ่านง่ายกว่า) สำหรับวิธี #pack
และ #unpack
ของ Ruby
BinData ทำให้การสร้างประเภทข้อมูลใหม่เป็นเรื่องง่าย รองรับประเภทข้อมูลดั้งเดิมทั่วไปทั้งหมดที่พบในรูปแบบข้อมูลไบนารีที่มีโครงสร้าง มีการรองรับฟิลด์ความยาวขึ้นอยู่กับและความยาวผันแปรได้ในตัว
$ gem install bindata
คู่มือ BinData
หากคุณมีข้อสงสัย / รายงานข้อผิดพลาด / ข้อเสนอแนะ โปรดติดต่อฉัน (Dion Mendel) ทางอีเมลที่[email protected]