Mar*_*cos 1 math bash shell bits
bash将数字转换为像1101这样的位域字符串可能是最简洁的方法吗?
实际上我试图做相反的事情
echo $[2#1101]
Run Code Online (Sandbox Code Playgroud)
原因:我需要向一个程序发送一个参数,该程序采用像"0011010110"这样的完整字符串形式的位域,但通常只需要启用一个或几个位,如下所示:
SUPPRESSbits=$[1<<16] runscript.sh # OR
SUPPRESSbits=$[1<<3 + 1<<9] runscript.sh # much more readable when I know what bits 3 and 9 toggle in the program
Run Code Online (Sandbox Code Playgroud)
然后runscript.sh然后在其env中看到SUPPRESSbits=65536而不是以SUPPRESSbits="1000000000000000"解析错误结束.
简单的方法:
$ dc <<<2o123p
1111011
$ bc <<<'obase=2; 123'
1111011
Run Code Online (Sandbox Code Playgroud)