Au moins pour les mots de 16 bits, on peut le diriger vers dd conv=swab
comme dans,
cat file.dat | dd conv=swab | od -t x2
Existe-t-il un utilitaire tel que hexdump qui gère l'endian non natif ?
Oui, l'utilitaire s'appelle Perl.
En fait, Data::HexDumper - bien que vous puissiez lancer le vôtre.
number_format A string specifying how to format the data. It can be any of the following, which you will notice have the same meanings as they do to perl's pack function: C - unsigned char S - unsigned 16-bit, native endianness v or S< - unsigned 16-bit, little-endian n or S> - unsigned 16-bit, big-endian L - unsigned 32-bit, native endianness V or L< - unsigned 32-bit, little-endian N or L> - unsigned 32-bit, big-endian Q - unsigned 64-bit, native endianness Q< - unsigned 64-bit, little-endian Q> - unsigned 64-bit, big-endian
Comme le suggère pixelbeat, vous pouvez utiliser objcopy :
$ objcopy -I binary -O binary --reverse-bytes=num inputfile.bin outputfile.bin
où num
est 2 pour les mots de 16 bits, 4 pour les mots de 32 bits et 8 pour les mots de 64 bits.
Malheureusement, objcopy n'a pas la possibilité d'accepter les entrées de stdin
ou écrire la sortie dans stdout
, donc pour l'utiliser comme tube, vous devez écrire un script wrapper qui crée des fichiers temporaires.
Cette réponse est copiée de https://stackoverflow.com/a/19288235/1979048 et de https://serverfault.com/a/329207/157443.