如何在java中将中文字符转换为十六进制

时间:2012-09-05 05:34:18

标签: java

我想将代码值为2字节,3字节范围的unicode字符转换为十六进制。

我知道如何将字符转换为十六进制。为此,我首先通过使用int进行转换将字符转换为ascii。从那里我使用Integer.tohexString转换为十六进制。

但是,我不知道如何处理像中文这样的unicode字符。有人可以帮忙吗?

3 个答案:

答案 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,那就非常简单了。