如何在 zsh 中获取字符的 Unicode 代码点?
例如,如果我有:
s=abc
如何获得代码点(即=s[2]
的代码点)?"b"
0x0062
答案1
索引是通过 ${s:start:length} 完成的,然后使用带有 %x 的 printf 转换为十六进制。如果您愿意,可以使用 printf 进行进一步格式化。
printf '%x\n' "'${s:1:1}'"
答案2
您可以通过printf
内置。
使用数字格式说明符时,如果相应的参数以引号字符开头,则使用后面字符的数值作为要打印的数字
要将代码点存储在数值变量中:
printf -v code_point %d \'$s[2]
要以十六进制表示法打印代码点:
printf '%04x\n' \'$s[2]