Как я могу получить поток содержимого файла, где каждые два байта меняются местами? - PullRequest
0 голосов
/ 19 октября 2019

В Linux я могу читать содержимое файла и отображать его как шестнадцатеричное значение. Для этого я использую следующую команду:

$ hexdump inputFile

Эта команда для моего файла дает:

0000000 5747 8114

Обратите внимание, что сначала 0000000 смещено. Данные 5747 8114. Для чтения первых двух байтов и их замены можно использовать следующий код:

BufferedInputStream is = new BufferedInputStream(
                new FileInputStream(inputFile))
byte[] bytes = new byte[4];
is.read(bytes, 0, 2);
int result = ByteBuffer.wrap(bytes).order(ByteOrder.LITTLE_ENDIAN).getInt(0);
System.out.println(Integer.toHexString(result)); // prints 5747

Однако это кажется слишком сложным и подверженным ошибкам. Обратите внимание, что я написал код, который читает файл в byte [], а затем заменяет байты, то есть

A, B, C, D

становится

B, A, D, C

Однако это не вариант для больших файлов. Итак, как мне получить поток содержимого файла, где каждые два байта меняются местами, как я описал выше?

...