获取zsh中字符的Unicode代码点

获取zsh中字符的Unicode代码点

如何在 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]

相关内容