java - 十六进制到西里尔文字
问题描述
我有像“D09FD0B5D180D0BDD0B8D0BA”这样的十六进制字节字符串,这是“Перник”。
对于西里尔字母的每个字母,我需要 2 个字节。
对于“П”,我需要“D0 9F”。
如果我使用:
char letter = (char) 1055; // this is "П"
我的问题是如何从十六进制“D0 9F”获取整数值“1055”。或者如何从“D09FD0B5D180D0BDD0B8D0BA”转换为“Перник”。
解决方案
您没有指定编码,但它似乎是 UTF-8,因此字符 П 没有编码为 041F(1055 年十月份),而是 D09F(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"));
}
}
推荐阅读
- fastlane - 如何获取其他操作使用的 ios Bundle ID
- python - 如何调用和遍历字典的特定索引?
- python - 没有名为“selenium.webdriver”的模块
- angular - Angular 6 CLI 安装
- bash - 如何理解'sort -uk 4n -uk 6n -uk 9n'、'sort -uk 4 -uk 6 -uk 9'和'sort -uk 4,4 -uk 6,6 -uk 9,9'之间的区别?
- r - R根据条件绑定多个列表
- angular - 角度反应形式,确认电子邮件不起作用
- ruby-on-rails - 如何使用 gem MiniMagik 管理图像质量
- docker - 使用 Ansible,如果 docker pull 抛出 404 错误,有没有办法拉另一个 docker 映像?
- html - 响应式引导表