En shell, comment puis-je lire les octets d'un fichier binaire que j'ai et imprimer le résultat sous forme de nombres hexadécimaux?
shell
text-processing
binary
Tom Brito
la source
la source
Réponses:
Utilisation
hexdump(1)
...
la source
od
. Il existe également un éditeur hexadécimal de style vi appeléhexer
.hexdump -e '"\\\x" /1 "%02x"' filename
10
16 hexadécimal. La représentation à deux octets dépend de l’ endianité du système. Tapezman hexdump
pour les détails complets.Une autre option est od :
ou
od
a de nombreuses options pour la mise au point.la source
od -t x1
le format préféré, je suppose.od -t test
j'ai eueod: invalid character 't' in type string 'test'
--t
od --version od (GNU coreutils) 7.4
Pendant que nous sommes sur
od
ethexdump
, deux autres outils similaires:Exemple de sortie:
Ou, si vous souhaitez lire les octets un par un et les imprimer dans votre propre format, essayez l'une des solutions suivantes:
Exemple de sortie:
la source
while
boucle ne fonctionne pas pour les caractères de barre oblique inverse et de nouvelle ligne (et en bash (contrairement à ksh93) pour les caractères vides), elle ne fonctionnera pas correctement dans les environnements locaux utf8 pour les octets avec le 8ème bit défini. Aussi, vous n'avez pas besoin de "od", vous pouvez utiliserprintf '%02x\n' "'$byte"
offset
est simplement une sorte de "variable factice" ici; il n'a pas d'utilisation pratique. Il est juste utilisé comme un espace réservé pour se rendrehex
. C’est ce qui affecte parfois la lisibilité de manière négative avecread
: les variables sortant du bleu.$offset
est limitée par le sous-shell, je ne vois donc pas cela comme un problème.Mes deux centimes:
J'aime cela parce que vous réduisez un fichier en mémoire tampon tout en pouvant voir l'hexdump en direct. N'oubliez pas que TOUT dans Unix est un fichier et que nous pouvons facilement chaîner des commandes telles que
tail
ethexdump
pour résoudre une grande variété de problèmes.la source
for((i=0;i<100;i++));do echo $i >>tst2.bin;sleep 1;done&
cela fonctionne bien pour surveiller thx :)Le commandant de minuit est une autre option. Je ne sais pas s'il est disponible pour tous les goûts Unix. Vous devrez peut-être le télécharger en premier.
F3 F4à afficher dans l'éditeur interne / en mode hexadécimal.
la source
J'utilise od avec c et x1 lorsque je dois rechercher du texte dans le fichier binaire:
la source