문자의 ASCII 숫자 값을 가져옵니다.

문자의 ASCII 숫자 값을 가져옵니다.

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다음을 사용하여 16진수 코드 포인트를 볼 수도 있습니다 .

$ 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

관련 정보