我在https://raw.github.com/lhunath/scripts/master/bash/bashlib/bashlib找到了这个函数:
hex() {
printf '%x' "'$1"
}
更多示例:
$ printf %x\\n \'ア
7fc2
$ LC_CTYPE=C printf %x\\n \'ア
e3
$ printf %s $' \n\n\\'|while IFS= read -r -d '' -n1 c;do printf %x\\n "'$c";done
20
20
a
a
5c
$ printf %s aäア|while IFS= read -r -d '' -n1 c;do printf '%s %x\n' "$c" "'$c";done
a 61
ä e4
ア 30a2
1d400
这printf
适用于 bash 4.2 和 zsh 4.3.11 中的内置函数,但不适printf
用于 bash 3.2 中的内置函数或 OS X 的/usr/bin/printf
.
-n1
一次读取一个字符,并将-d ''
分隔符从 更改\n
为\0
,因此read
还包括换行符(但不包括 NUL 字符)。read
POSIX 指定的唯一选项是-r
.