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]