我有一个可以将十六进制转换为 ASCII 的脚本,但我不知道它是如何工作的。另外,我不确定它是否正确。
我想知道它是如何工作的。 用法是 ./hexToASCII {hex String}> {file}
hex="$1"
# Convert Hexa decimal to ASCII
for i in $(awk -v len=$(expr "$hex" : '.*') 'BEGIN {for(i=1;i<len;i=i+2) print i;}')
do
awk -v d=$(printf "ibase=16\n%s\n" $(echo $hex|cut -c$i-$(expr $i + 1)) | bc) 'BEGIN {printf("%c",d);}'
done
最佳答案
(不是问题的真正答案。只是为了展示解决方案太复杂了。解释其中的所有内容需要相当多的时间。)
更简单的解决方案:
[STEP 101] # hex=68656C6C6F0A
[STEP 102] # echo $hex | sed 's/../\\x&/g'
\x68\x65\x6C\x6C\x6F\x0A
[STEP 103] # printf $(echo $hex | sed 's/../\\x&/g')
hello
[STEP 104] #
[STEP 105] # echo $hex | xxd -p -r
hello
[STEP 106] #
或纯 Bash:
[STEP 107] # for ((i=0; i<${#hex}; i+=2)); do printf "\x${hex:i:2}"; done
hello
[STEP 108] #
关于linux - 该脚本如何将十六进制转换为 ascii?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57037399/