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

如何在java中将汉字转换为十六进制,java,Java,我想将代码值在2字节、3字节范围内的unicode字符转换为十六进制 我知道如何将字符转换成十六进制。为此,我首先使用int将字符转换为ascii,然后使用Integer.tohextString将字符转换为十六进制 但是,我不知道如何处理unicode字符,如中文等。有人能帮忙吗?请参阅 不要“转换为ASCII”;Javachar足够大,可以支持整个脚本,其中应该包含CJK-Han脚本 在Java中,不应将字符串作为字节数组处理。。。但是如果需要,可以使用getBytes() 我想你应该重新考

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

我知道如何将字符转换成十六进制。为此,我首先使用int将字符转换为ascii,然后使用Integer.tohextString将字符转换为十六进制

但是,我不知道如何处理unicode字符,如中文等。有人能帮忙吗?

请参阅

不要“转换为ASCII”;Java
char
足够大,可以支持整个脚本,其中应该包含CJK-Han脚本


在Java中,不应将字符串作为字节数组处理。。。但是如果需要,可以使用
getBytes()


我想你应该重新考虑一下你的方法

一般来说,听起来您想要对这些数据进行某种类型的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十六进制,这是一件非常简单的事情。

不要“转换为ascii”;Java
char
足够大,可以支持整个,它应该包含CJK Han脚本。我可以知道我为什么不将其转换为ASCII的原因吗?至于会出现什么复杂情况。@JannatArora ASCII是一个非常有限的字符集,只支持128个字符。@JannatArora如果您想支持3字节和4字节UTF-16码点,您应该使用
String.charAt
,它正确地处理代理(因此它是
int
而不是
char
byte[] bs = "中文".getBytes("utf-8");
for(byte b : bs)
    System.out.print(Integer.toHexString(b) + " ");
out = new PrintWriter(new OutputStreamWriter(new FileOutputStream("file"), "utf-8"));
out.println("...");