Processingでcharデータ型をutf-8 int表現に変換するにはどうすればよいですか?
したがって、配列 ['a', 'b', 'c'] がある場合、別の配列 [61, 62, 63] を取得したいと思います。
Processingでcharデータ型をutf-8 int表現に変換するにはどうすればよいですか?
したがって、配列 ['a', 'b', 'c'] がある場合、別の配列 [61, 62, 63] を取得したいと思います。
「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