十六进制到西里尔文字
Hex to Cyrillic text
我有像“D09FD0B5D180D0BDD0B8D0BA”这样的十六进制字节字符串,这是“Перник”。
对于每个西里尔字母,我需要 2 个字节。
对于“П”,我需要“D0 9F”。
如果我使用:
char letter = (char) 1055; // this is "П"
我的问题是如何从十六进制“D0 9F”获取整数值“1055”。
或者如何从“D09FD0B5D180D0BDD0B8D0BA”转换为“Перник”。
您没有指定编码,但它似乎是 UTF-8,因此字符 П 没有编码为 041F(dec. 1055),而是编码为 D09F(dec. 53407)。
另请注意,UTF-8 是一种可变长度编码,因此假设 2 字节/字符可能对西里尔字母表有效,但通常无效。
import java.nio.charset.StandardCharsets;
public class Hex2String {
public static String hex2String(String hex) {
byte[] b=new byte[hex.length()/2];
for (int i=0;i<b.length;i++) {
b[i]=(byte) Integer.parseInt(hex, i*2, i*2+2, 16);
}
return new String(b, StandardCharsets.UTF_8);
}
public static void main(String[] args) {
System.out.println(hex2String("D09FD0B5D180D0BDD0B8D0BA"));
}
}
我有像“D09FD0B5D180D0BDD0B8D0BA”这样的十六进制字节字符串,这是“Перник”。
对于每个西里尔字母,我需要 2 个字节。
对于“П”,我需要“D0 9F”。
如果我使用:
char letter = (char) 1055; // this is "П"
我的问题是如何从十六进制“D0 9F”获取整数值“1055”。 或者如何从“D09FD0B5D180D0BDD0B8D0BA”转换为“Перник”。
您没有指定编码,但它似乎是 UTF-8,因此字符 П 没有编码为 041F(dec. 1055),而是编码为 D09F(dec. 53407)。
另请注意,UTF-8 是一种可变长度编码,因此假设 2 字节/字符可能对西里尔字母表有效,但通常无效。
import java.nio.charset.StandardCharsets;
public class Hex2String {
public static String hex2String(String hex) {
byte[] b=new byte[hex.length()/2];
for (int i=0;i<b.length;i++) {
b[i]=(byte) Integer.parseInt(hex, i*2, i*2+2, 16);
}
return new String(b, StandardCharsets.UTF_8);
}
public static void main(String[] args) {
System.out.println(hex2String("D09FD0B5D180D0BDD0B8D0BA"));
}
}