Almeno per le parole a 16 bit si può reindirizzare attraverso dd conv=swab
come in,
cat file.dat | dd conv=swab | od -t x2
Esiste un'utilità come hexdump che gestirà l'endianità non nativa?
Sì, l'utilità si chiama Perl.
Beh, in realtà Data::HexDumper, anche se potresti crearne uno tuo.
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
Come suggerisce pixelbeat, potresti usare objcopy:
$ objcopy -I binary -O binary --reverse-bytes=num inputfile.bin outputfile.bin
dove num
è 2 per parole a 16 bit, 4 per parole a 32 bit e 8 per parole a 64 bit.
Sfortunatamente objcopy non ha alcuna opzione per accettare l'input da stdin
o scrivi l'output in stdout
, quindi per usarlo come pipe dovresti scrivere uno script wrapper che crei file temporanei.
Questa risposta è copiata da https://stackoverflow.com/a/19288235/1979048 e da https://serverfault.com/a/329207/157443.