Вопрос-ответ

Converting A String To Hexadecimal In Java

Преобразование строки в шестнадцатеричный формат в Java

Я пытаюсь преобразовать строку типа "testing123" в шестнадцатеричную форму в Java. В настоящее время я использую BlueJ.

И чтобы преобразовать ее обратно, это то же самое, только в обратном направлении?

Переведено автоматически
Ответ 1

Вот короткий способ преобразовать ее в шестнадцатеричный формат:

public String toHex(String arg) {
return String.format("%040x", new BigInteger(1, arg.getBytes(/*YOUR_CHARSET?*/)));
}
Ответ 2

Чтобы гарантировать, что шестнадцатеричный формат всегда имеет длину 40 символов, BigInteger должен быть положительным:

public String toHex(String arg) {
return String.format("%x", new BigInteger(1, arg.getBytes(/*YOUR_CHARSET?*/)));
}
Ответ 3
import org.apache.commons.codec.binary.Hex;
...

String hexString = Hex.encodeHexString(myString.getBytes(/* charset */));

http://commons.apache.org/codec/apidocs/org/apache/commons/codec/binary/Hex.html

Ответ 4

Использование DatatypeConverter.printHexBinary():

public static String toHexadecimal(String text) throws UnsupportedEncodingException
{
byte[] myBytes = text.getBytes("UTF-8");

return DatatypeConverter.printHexBinary(myBytes);
}

Пример использования:

System.out.println(toHexadecimal("Hello StackOverflow"));

С принтами:

48656C6C6F20537461636B4F766572666C6F77

Примечание: Это вызывает небольшие дополнительные проблемы с Java 9 и более новыми версиями, поскольку API не включен по умолчанию. Для справки, например, см. Этот GitHub выпуск.

java string