【发布时间】:2018-11-19 03:40:05
【问题描述】:
我正在运行 ubuntu 16,并在终端中使用 bash 脚本来读取程序的标准输出。 c++程序使用putchar通过stdout输出8位字符到终端。我尝试在 bash 脚本中捕获该输出并打印 ascii 十进制表示。
例如,如果程序输出“A”,则 bash 脚本会将 65 转换并打印为相应的 ascii。但是,当程序输出 0-127 范围之外的奇怪字符时,我得到的只是 32767 而不是正确的小数。看来 ubuntu 上的 bash 不支持非标准的 8 位 ascii。
我目前使用这样的东西来转换为十进制:
decimal=$(printf '%d' "'$char")
有什么方法可以在 linux 命令行上将字符从 stdout 转换为十进制值?
【问题讨论】:
-
没有“8 位 ASCII”之类的东西——ASCII 是 7 位代码。有各种 8 位字符编码,包括 ASCII 作为代码 0-127(例如 iso8859 和 UTF-8)——也许您是指其中之一?