![](/img/trans.png)
[英]Java: How to convert a String of Binary values to a Float and vice-versa?
[英]Java Char to its unicode hexadecimal string representation and vice-versa
我需要将Java字符的十六进制代码生成为字符串,并在以后再次解析这些字符串。 我在这里发现解析可以执行如下:
char c = "\u041f".toCharArray()[0];
我希望像Integer.valueOf()这样更优雅的东西进行解析。
如何正确生成十六进制unicode?
这将生成char的十六进制字符串表示:
char ch = 'ö';
String hex = String.format("%04x", (int) ch);
这会将十六进制字符串转换回char:
int hexToInt = Integer.parseInt(hex, 16);
char intToChar = (char)hexToInt;
在做了更深入的阅读之后,javadoc说基于char
参数的Character方法不支持所有unicode值,但是那些采用代码点(即int
)的方法。
因此,我一直在进行以下测试:
int codePointCopyright = Integer.parseInt("00A9", 16);
System.out.println(Integer.toHexString(codePointCopyright));
System.out.println(Character.isValidCodePoint(codePointCopyright));
char[] toChars = Character.toChars(codePointCopyright);
System.out.println(toChars);
System.out.println();
int codePointAsian = Integer.parseInt("20011", 16);
System.out.println(Integer.toHexString(codePointAsian));
System.out.println(Character.isValidCodePoint(codePointAsian));
char[] toCharsAsian = Character.toChars(codePointAsian);
System.out.println(toCharsAsian);
我得到了:
因此,我不应该在我的问题中谈论char
,而是谈论字符数组,因为Unicode字符可以用多个char
。 另一方面, int
涵盖了所有内容。
在字符串级别:以下使用的不是char而是int,例如中文,但也适用于字符。
int cp = "\u041f".codePointAt(0);
String s = new String(Character.toChars(cp));
在native2ascii级别:如果要在\\uXXXX
和Unicode字符之间来回转换,请使用apache,commons-lang StringEscapeUtils
:
String t = StringEscapeUtils.escapeJava(s + "ö");
System.out.println(t);
在命令行上,native2ascii可以在u-escaped和UTF-8之间来回转换文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.