我尝试使用BIN=$(echo "obase=2; ibase=16; $i" | bc )
进行转换。
我的输出是示例1000000100000011110000110000010
。我需要工作(按视图检查),从第11位开始。
我需要输出格式为(ex):1000 0010 0000 1111......
可以寻求帮助吗?感谢
答案 0 :(得分:1)
如果您只想将二进制文件拆分为4位数块,则可以使用任何理解{}
区间运算符的语言。你的里程可能因sed和awk而异,但perl和ruby总是支持操作员。
当然还有其他方法可以做同样的事情,但有些方法比其他方式更具可读性。 Ruby为这种字符串操作提供了非常干净和可维护的语法。
BIN=1000000100000011110000110000010
echo "$BIN" | ruby -ne 'puts $_.scan(/\d{4}/).join " "'
1000 0001 0000 0011 1100 0011 0000
答案 1 :(得分:1)
使用以下命令以4个
的块打印$ BINformat=`echo %0$(((${#BIN}%4 ? ${#BIN}/4 + 1 : ${#BIN}/4) * 4))d`
printf $format $BIN | sed 's/.\{4\}/& /g'
在第一行中,我们使用
计算输出二进制值的长度$ {#} BIN
然后在同一行中我们形成格式说明符。
例如,
0101 - %04d
1 - %04d
10010 - %08d
使用以$格式获得的格式说明符,printf打印前缀为0的二进制值,使字符串长度为4的倍数。
然后'sed'命令将字符串分成4个块。