2

コード値が 2 バイト、3 バイトの範囲の Unicode 文字を 16 進数に変換したいと考えています。

文字を16進数に変換する方法を知っています。そのために、最初にintを使用してキャストすることにより、文字をASCIIに変換しています。それから、Integer.tohexString を使用して 16 進数に変換します。

ただし、中国語などのユニコード文字の扱い方がわかりません。誰か助けてもらえますか?

4

3 に答える 3

1

Java では文字列をバイト配列として扱うべきではありません...しかし、必要に応じて使用できますgetBytes()

byte[] bs = "中文".getBytes("utf-8");
for(byte b : bs)
    System.out.print(Integer.toHexString(b) + " ");
于 2012-09-05T06:41:34.617 に答える
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 16進数として表現したい場合、それは非常に簡単なことです。

于 2012-09-05T06:47:16.027 に答える
0

私のコメントを参照してください。

「ASCII に変換」しないでください。Javaは、CJK Han スクリプトを含むBasic Multilingual Planechar全体をサポートするのに十分な大きさです。

/* 七 -> 4e03 */
assert "4e03".equals(Integer.toHexString('七'));
于 2012-09-05T05:53:50.003 に答える