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가 이 형식으로 데이터를 읽고 쓰는 방법을 알아낸다는 의미입니다. 이는 Ruby의 #pack
및 #unpack
메소드보다 더 쉽고 읽기 쉬운 대안입니다.
BinData를 사용하면 새로운 데이터 유형을 쉽게 만들 수 있습니다. 구조화된 이진 데이터 형식에서 발견되는 모든 공통 기본 데이터 유형을 지원합니다. 종속 및 가변 길이 필드에 대한 지원이 내장되어 있습니다.
$ gem install bindata
BinData 매뉴얼.
문의 사항/버그 보고/제안 사항이 있는 경우 이메일 [email protected]를 통해 저(Dion Mendel)에게 연락해 주십시오.