Zumindest für 16-Bit-Wörter kann man es durch dd conv=swab
leiten wie in,
cat file.dat | dd conv=swab | od -t x2
Gibt es ein Dienstprogramm wie hexdump, das mit nicht-nativem Endian-Niveau umgehen kann?
Ja, das Dienstprogramm heißt Perl.
Nun, eigentlich Data::HexDumper - obwohl Sie Ihren eigenen rollen könnten.
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
Wie Pixelbeat vorschlägt, könnten Sie objcopy:
verwenden$ objcopy -I binary -O binary --reverse-bytes=num inputfile.bin outputfile.bin
wobei num
ist 2 für 16-Bit-Wörter, 4 für 32-Bit-Wörter und 8 für 64-Bit-Wörter.
Leider hat objcopy keine Option, Eingaben von stdin
zu akzeptieren oder Ausgabe in stdout
schreiben , um es also als Pipe zu verwenden, müssten Sie ein Wrapper-Skript schreiben, das temporäre Dateien erstellt.
Diese Antwort wird von https://stackoverflow.com/a/19288235/1979048 und von https://serverfault.com/a/329207/157443 kopiert.