bash中不使用printf实现字符转ASCII及结果存入变量的方法
解答
存储现有函数的执行结果到变量
你不需要修改已有的ascii函数,直接用bash的命令替换语法即可捕获函数输出赋值给变量,不会直接打印到终端:
# 你原有定义的转换函数 ascii() { printf '%d' "'$1"; } # 命令替换用法:变量=$(命令/函数调用) target_char="A" ascii_code=$(ascii "$target_char") # 测试验证变量存储结果 echo "字符${target_char}的ASCII码为:$ascii_code"
不使用printf实现字符转ASCII码
可以用两种方案实现,都不需要调用printf:
方案1:纯bash内置实现(无外部命令依赖)
bash的算术扩展原生支持单引号前缀的字符直接转ASCII数值,不需要调用任何外部命令:
ascii_without_printf() { # 算术扩展 $(( )) 中,'加字符会直接返回对应ASCII码 echo $(( "'$1" )) } # 同样支持命令替换存变量 code=$(ascii_without_printf "b")
方案2:使用od命令实现
如果需要依赖通用转储工具实现,可以用od命令处理字符输入:
ascii_by_od() { # -An 关闭偏移地址输出,-t u1 指定按单字节无符号十进制输出,tr删除多余空格 od -An -t u1 <<< "$1" | tr -d ' ' }
内容的提问来源于stack exchange,提问作者user17519672
相关产品推荐
相关产品推荐

