2009-07-23 15 views
8

Potrzebuję móc przetworzyć plik binarny z Ruby. Ten plik zawiera porcje danych, które można znaleźć w nagłówku, który zawiera przesunięcie pliku i długość każdego fragmentu.Parsowanie pliku binarnego w języku Ruby

Jak uzyskać prawidłowe dane? Do tej pory nie byłem w stanie szukać w pliku na podstawie offsetu, który przeczytałem, ponieważ pojawiają się w ciągach, których nie potrafię przetłumaczyć na format IO # seek understand.

Każda pomoc? Ogólny sposób konwersji przesunięcia i długości na coś użytecznego (np. Liczbę całkowitą lub coś podobnego) byłby pomocny.

Odpowiedz

6

Chcesz String#unpack.

+0

To było to. unpack ("L *") jest tym, czego potrzebowałem. –

+1

Powinieneś jawnie używać rozpakowywania little-endian lub big-endian zamiast native-endian, aby zachować trochę przenośności. – hhaamu

2

Można również rzucić okiem na BitStruct, który oferuje przyjemny wysokopoziomowy interfejs do analizowania danych binarnych.

+0

Zaktualizowany link: https://github.com/vjoel/bit-struct – odigity