You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 17:27:00