1

Processingでcharデータ型をutf-8 int表現に変換するにはどうすればよいですか?

したがって、配列 ['a', 'b', 'c'] がある場合、別の配列 [61, 62, 63] を取得したいと思います。

4

2 に答える 2

1

「utf-8 int」とはどういう意味ですか? UTF8 は、Unicode 数値として表される文字 (技術的にはグリフ) のマルチバイト エンコーディング スキームです。あなたの例では、ASCII セットの些細な文字を使用していますが、そのセットは実際の unicode/utf8 の質問とはほとんど関係がありません。

単純な文字の場合は、文字通り単に int キャストできます。

print((int)'a') -> 97
print((int)'A') -> 65

ただし、16 ビット文字の範囲外の文字ではそれを行うことはできません。print((int)'二')動作します (20108、または 16 進数で 4E8C をprint((int)'')与える) の文字コードが 16 ビットに収まらないため、コンパイル エラーが発生します (131362、または 16 進数で 20122 であると想定され、3 バイトの UTF-8 としてエンコードされます)。シーケンス 239+191+189)

そのため、コードが int キャスティングよりも高い Unicode 文字の0xFFFF場合は、int キャストを使用できず、実際に何をデコードするかについてよく考える必要があります。真の Unicode ポイント値が必要な場合は、文字通りバイト プリントをデコードする必要がありますが、Processing IDE では実際にはそれができません。"".length() は 1 ですが、実際の Java では実際には 3 です。現在の処理では、.length() より大きいコードを持つ文字の Unicode 値を実際に取得する方法はありません0xFFFF

アップデート

誰かがあなたが実際に16進文字列を望んでいたと言いました。その場合は、組み込みhex関数を使用してください。

println(hex((int)'a')) -> 00000061

2、4、または 6 文字のみが必要な場合は、部分文字列を使用します。

println(hex((int)'a').substring(4)) -> 0061
于 2013-05-25T14:22:21.470 に答える