0
我正在写一个小小的shell脚本,用于将ASCII字符转换为二进制,然后逐个从结果字节中获取每一位。shell - 如何从一个字节中单独获取每一位?
这里是我的代码:
#!/bin/sh
binary=00000000
bit0=0
bit1=0
bit2=0
bit3=0
bit4=0
bit5=0
bit6=0
bit7=0
#main
read -p "Please enter your text: " word
for i in $(seq 1 ${#word})
do
binary=`echo ${word:i-1:1} | perl -lpe '$_=unpack"B*"'`
echo $binary
for n in $(seq 1 ${#binary})
do
eval "bit$n=${binary:i-1:1}"
done
echo $bit0
echo $bit1
echo $bit2
echo $bit3
echo $bit4
echo $bit5
echo $bit6
echo $bit7
done
sleep 5
对于什么都在这里原因,这一块是不工作:
for n in $(seq 1 ${#binary})
do
eval "bit$n=${binary:i-1:1}"
done
应该正确的数字从二进制变量分配每位#变量。 也可能你这段代码向我解释,我不完全理解它:
echo ${word:i-1:1} | perl -lpe '$_=unpack"B*"'
不知道你的意图可以给什么你告诉你”回覆 寻找。看看{typeset a =“10”;回声“$ {a:1:1}”| perl -lpe'$ _ =解压“B *”'; }结果。它是“00110000”,它是48的二进制表示,taht是字符串“01”的第二位置'0'的ASCII码。 –