Я видел много похожих вопросов и ответов на этом форуме, но не нашел ничего, что решило бы мою проблему.
Идея достаточно проста:
(Это использует язык программирования Java - в настоящее время я ограничен использованием Java 7)
Получен массив байтов (представляющих что-либо: некоторый проводной формат, некоторую форму закодированных данных, двоичные данные со встроенным «текстом» и т. Д.). Я хотел бы иметь возможность печатать массив в следующих формах:
- в виде шестнадцатеричной строки
- как текст для печати
Первый случай отчасти по причинам отладки, но может также использоваться в режиме без отладки. Второй случай - исключительно по причинам отладки, и он позволяет сравнивать человека с другими источниками информации.
Мне кажется, у меня есть решение для первого случая, но я борюсь со вторым.
Очевидно, что массив байтов может содержать непечатаемые символы или символы, которые отображаются разными способами. Как я могу «напечатать» массив, чтобы все байты были представлены? Хороший аналог, который я могу предоставить, - это команда UNIX od
, где od -ah
отображает двоичные данные в шестнадцатеричной форме, а также символы ASCII. В этом случае точки (.
) обычно используются вместо непечатных или управляющих символов.
Мне не нужно, чтобы он точно выглядел как то, что выдает od
, но хотел бы иметь возможность показывать данные так, чтобы по крайней мере печатные символы были видны, а остальные отображались с каким-то заполнителем. Кроме того, я не хочу удалять непечатаемые символы, поскольку это может привести к неверному представлению данных.
Если у кого-то есть информация о том, как этого добиться, я был бы очень признателен.