2009-07-23 7 views
8

Je dois être capable d'analyser un fichier binaire avec Ruby. Ce fichier contient des blocs de données trouvés via un en-tête qui inclut le décalage de fichier et la longueur de chaque bloc.Analyse d'un fichier binaire dans Ruby

Comment puis-je récupérer les données correctement? J'ai été incapable jusqu'ici de chercher dans le fichier basé sur les décalages que j'ai lus depuis qu'ils sortent dans des chaînes que je ne sais pas comment convertir en un format IO # cherche comprend.

Une aide? Une façon générale de convertir le décalage et la longueur en quelque chose d'utilisable (comme un entier ou quelque chose) serait utile.

Répondre

6

Vous souhaitez String#unpack.

+0

C'était tout. Unpack ('L *') est ce dont j'avais besoin. –

+1

Vous devriez utiliser explicitement les unpacks little-endian ou big-endian au lieu de natif-endian, pour garder un peu de portabilité. – hhaamu

2

Vous pouvez également jeter un oeil à BitStruct qui offre une belle interface de haut niveau pour l'analyse des données binaires.

+0

Lien mis à jour: https://github.com/vjoel/bit-struct – odigity

Questions connexes