获取字符的 ASCII 数字值

获取字符的 ASCII 数字值

我正在尝试编写一个 shell 脚本,它要求 AZ 或 az 范围内的 ASCII 字符并返回其等效的数值。例如,输出可能如下所示:

scarlet$ Please type a character between A and Z or between a and z:
scarlet$ A       
scarlet$ The decimal value of A is: 65 

我的尝试:

#!/bin/bash
echo Enter a letter:
read A
echo -n ${A} | od -i | head -1 | cut -b 10- | tr -d " "

答案1

POSIX:

$ printf %d\\n \'a
97

它也适用于 bash 4.0 及更高版本以及 zsh 中的非 ASCII 字符:

$ printf %x\\n \'あ
3042

您还可以使用recode ..dump查看十六进制代码点:

$ printf aあ|recode ..dump
UCS2   Mne   Description

0061   a     latin small letter a
3042   a5    hiragana letter a

答案2

POSIX:printf a | od -A n -t d1

珀尔:perl -e 'print ord($ARGV[0])' a

Perl,如果在 UTF-8 语言环境中则处理 UTF-8:perl -C255 -e 'print ord($ARGV[0])' œ

答案3

或许:

#!/bin/bash

echo -n "Enter a letter:"
read A
echo ${A}|od -t d1|awk '{printf "%s",$2}';echo

干杯

答案4

od -t d1如果你有的话试试吧。其他输出格式很奇怪。

您也不需要头部和切口,例如:

printf "A" | od -t d1 | read addr num && echo $num

相关内容