提问者:小点点

如何在不使用bash中的printf的情况下将字符转换为ASCII


ascii() {printf '%d' "'$1"}

我目前正在使用这个函数将字符转换为ASCII,但是我只想将函数的结果存储为变量而不打印ascii。我该怎么做?(请记住,我只使用bash几个小时,如果这是一个愚蠢的问题,很抱歉。)


共2个答案

匿名用户

在巴什,之后

printf -v numval "%d" "'$1"

变量numval(您可以使用任何其他有效的变量名)将保存位置参数1美元中包含的字符串第一个字符的数值。

或者,您可以使用命令替换:

numval=$(printf "%d" "'$1")

请注意,这些仍然使用printf,但不会将任何内容打印到stdout

正如@Charles Duffy的评论中所说,printf-v版本更高效,但可移植性更差(标准POSIX shell不支持-v选项)。

匿名用户

谢谢你的脚本!我不知道如何获取ascii值,所以“'M”救了我。我将参数传递给函数以获得返回。函数返回我用来…好吧,返回错误/状态代码。

#!/bin/sh
# posix

ascii () {
    # $1 decimal ascii code return
    # $2 character
    eval $1=$(printf '%d' "'$2")
}

ascii cod 'M'

echo "'M' = $cod"