String
bc 將二進制輸出為由空格分隔的半字節
我正在調試包含很多位移操作的程式碼,並且我經常使用 bc 來查看位級別上發生了什麼。
這是我使用的:
$ echo 'obase=2;598980975283696640' | bc 100001010000000000100000011000000011000000000111010000000000
有沒有一種簡單的方法可以將輸出作為空格分隔的半字節?例如
1000 0101 0000 0000 0010 0000 0110 0000 0011 0000 0000 0111 0100 0000 0000
提前感謝您的回答!
編輯:感謝您的回复!然而,
我在另一個號碼 262148 上試了一下。
應該:
100 0000 0000 0000 0100
但它是:
1000 0000 0000 0000 100
我猜腳本必須通過字元串向後搜尋才能正確?
我會使用這個簡單的功能:
nibbles () { echo "obase=2; $1" | bc | rev | while read -n4 a; do echo -n "$a ";done | rev ; echo; } $ nibbles 598980975283696640 1000 0101 0000 0000 0010 0000 0110 0000 0011 0000 0000 0111 0100 0000 0000
echo 'obase=2;598123123980975281233696640' | BC_LINE_LENGTH=0 bc | rev | fold -w4 | paste -sd ' ' - | rev
或者:
echo 'obase=2;598123123980975281233696640' | BC_LINE_LENGTH=0 bc | sed ':1 s/\(.*[01]\)\([01]\{4\}\)/\1 \2/;t1'
BC_LINE_LENGTH=0
是停止bc
在 70 列處包裝數字。這是 GNU 特有的。rev
不是標準命令,但很常見。