Me gustaría poder convertir una cadena UTF-8 sin formato a una cadena Hex. En el siguiente ejemplo, he creado una cadena de muestra UTF-8 que contiene 2 letras. Luego trato de obtener los valores Hex pero me da valores negativos.JAVA: obtenga valores hexadecimales UTF-8 de una cadena?
¿Cómo puedo hacer que me dan 05D0 y 05D1
String a = "\u05D0\u05D1";
byte[] xxx = a.getBytes("UTF-8");
for (byte x : xxx) {
System.out.println(Integer.toHexString(x));
}
Gracias.
Bueno, ¿quieres los valores hexadecimales del UTF-8 (0xD790) o el punto de código (0x000005D0)? Si quiere el punto de código, convierta los bytes a una cadena con 'new String (bytes," UTF-8 ")' y luego use 'Character.codePointAt (...). ToHexString()' para obtener la representación hexadecimal. – ataylor
Tal vez me esté perdiendo algo. 'Character.codePointAt' no tiene un método' toHexString', devuelve un número entero. ¿Puedes darme un ejemplo completo? Gracias – thedp
Vaya, toHexString es un método estático. 'System.out.println (Integer.toHexString (Character.codePointAt (" \ u05D0 ", 0)))' imprimirá '5d0'. Si desea rellenarlo con ceros a la izquierda, intente con 'System.out.printf ("% 08x ", Character.codePointAt (" \ u05D0 ", 0))' que imprime '000005d0'. – ataylor