문자를 숫자로 인코딩

문자를 숫자로 인코딩

다음 스크립트는 사용자에게 입력을 요청한 후 입력을 출력으로 인쇄합니다.

#!/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

관련 정보