В вашем сообщении есть несколько неправильных представлений - или, по крайней мере, проблемных описаний:
- Строки состоят из символов , а не байтов
- Числа не являются шестнадцатеричными или десятичными и т. Д .; их представления являются шестнадцатеричными и т. д.
Затем вы звоните String.getBytes()
, но не ясно, какую кодировку вы хотите использовать. Как указано выше, строка представляет собой последовательность символов . Чтобы преобразовать это в байт , вам нужно применить кодировку. К сожалению, String.getBytes()
использует «кодировку платформы по умолчанию», которая почти никогда не является хорошим выбором. Вы всегда должны указывать, какую кодировку вы хотите использовать.
Когда вы преобразовали строку в байты (если вы определенно хотите это сделать), ее легко преобразовать в гекс:
for (byte b : test.getBytes("UTF-8"))
{
int x = b & 0xff; // I suspect you don't want negative numbers
System.out.println(Integer.toHexString(b));
}
В качестве альтернативы вы можете преобразовать каждый Unicode символ в его шестнадцатеричное представление:
for (char c : test.toCharArray())
{
System.out.println(Integer.toHexString(c));
}
Обратите внимание, что Integer.toHexString
не дополняет вывод до определенного количества символов.
Если бы вы могли дать больше информации о ваших входных и ожидаемых результатах, это действительно помогло бы.