zshから文字のUnicodeコードポイントを取得する

zshから文字のUnicodeコードポイントを取得する

zshで文字のUnicodeコードポイントを取得するには?

たとえば、次のような場合があります。

s=abc

コードポイント(つまりs[2]=のコードポイント)を取得するには?"b"0x0062

答え1

インデックスは ${s:start:length} で行われ、次に %x とともに printf を使用して 16 進数に変換されます。必要に応じて、printfを使用して追加のフォーマットを指定できます。

printf '%x\n' "'${s:1:1}'"

答え2

合格できます。printf組み込み

数値書式指定子を使用する場合、そのパラメータが引用符で始まる場合、次の文字の数値が印刷される数値として使用されます。

数値変数にコードポイントを保存するには:

printf -v code_point %d \'$s[2]

16進表記でコードポイントを印刷するには、次のようにします。

printf '%04x\n' \'$s[2]

関連情報