将字母编码为数字

将字母编码为数字

下面的脚本要求用户输入一些内容,然后将输入内容打印为输出:

#!/bin/bash
 printf "\e[31mType/Enter something: $pdir\e[m  ";
 read -e userInput
 if [[ -n "$userInput" ]]
 then
     pdir=$userInput 
 fi
 printf "\e[96mYour code is: $pdir\e[m\n";

我的问题是:

  1. 前面的代码如何只读取“userInput”中的字母?
  2. 如何将我的条目“userInput”转换为输出数字,例如,如果我输入“John”,如何获得输出数字。

答案1

我想到了两种方法

将每个字符转换为其 ASCII 值

$ echo John | perl -lne 'printf "%03d", ord for split ""'
074111104110

或者,如果您不严格需要数字,只是一个代码,base64

$ echo John | base64
Sm9obgo=

解码:

$ echo 074111104110 | perl -ne 'print chr for /(\d{3})/g'
John

$ echo Sm9obgo= | base64 --decode
John

相关内容