2009-08-03 6 views
1

Comment puis-je déballer un fichier binaire de 4 octets, stocker comme l'exemple suivant, dans un fichier tableau ou TEXT?Décompresser un fichier binaire dans un fichier texte - Un problème qui retourne les valeurs

fichier d'entrée

:

00000000 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 00 |................| 
00000001 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 |................| 

fichier de sortie souhaité:

0,1,1,0,1,1,1,1 

Pour l'instant je suis en utilisant le code Déballez suivant:

open(ERROR_ID_BIN, "<", "/error_id.bin") or die $!; 
local $/; 
my @err_values = unpack("V*", <ERROR_ID_BIN>); 
close(ERROR_ID_BIN); 
print "\n\n\n\n\[email protected]_values\n\n\n"; 

Et mon problème est que flips les valeurs et me donne que:

0,16777216,16777216,0,16777216,16777216,16777216,16777216 

Que dois-je faire?

Répondre

4

V est petit-boutiste (octet le moins significatif en premier); essayez N pour big-endian (octet le plus significatif en premier).

+0

ouais, je suppose que ça arrange le bordel! merci ysth – YoDar

+0

Heh, j'ai eu ce problème une fois. Ça m'a pris des jours pour le comprendre. Maintenant, je vérifie toujours avec little & big endian si quelque chose ne va pas – Clox

3

De la documentation pack

N unsigned long (32 bits) pour "réseau" (big-endian).

V An non signé court (32 bits) dans "VAX" (little-endian).

Ne vous voulez 'N' pour corriger votre endness?

+0

Oui, 'N' change le résultat en résultat attendu. – YoDar

Questions connexes