我想将代码值为2字节,3字节范围的unicode字符转换为十六进制。
我知道如何将字符转换为十六进制。为此,我首先通过使用int进行转换将字符转换为ascii。从那里我使用Integer.tohexString转换为十六进制。
但是,我不知道如何处理像中文这样的unicode字符。有人可以帮忙吗?
答案 0 :(得分:1)
您不应该将String作为Java中的字节数组处理...但是如果您愿意,可以使用getBytes()
byte[] bs = "中文".getBytes("utf-8");
for(byte b : bs)
System.out.print(Integer.toHexString(b) + " ");
答案 1 :(得分:0)
请参阅my comment。
不要“转换为ASCII”; Java
char
足以支持整个Basic Multilingual Plane,它应该包含CJK Han脚本。
/* 七 -> 4e03 */
assert "4e03".equals(Integer.toHexString('七'));
答案 2 :(得分:0)
我想您可能想重新考虑一下您的方法。
通常,听起来您想对这些数据进行某种I / O操作。通常,您可以使用字符编码和java.io Reader / Writer API来实现。
请参阅InputStreamReader和OutputStreamWriter。
您始终可以将编写器的输出发送到FileOutputStream(或者ByteArrayOutputStream)以将字符作为二进制数据输出。
out = new PrintWriter(new OutputStreamWriter(new FileOutputStream("file"), "utf-8"));
out.println("...");
如果你想对base64进行编码,或者只是将其表示为ascii hex,那就非常简单了。