Преобразование строки в шестнадцатеричный формат в 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():
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 9
GitHub