与bc bash的力量的力量
发布时间:2020-12-15 22:04:36 所属栏目:安全 来源:网络整理
导读:我想计算一下: 0x0404cb * 2**(8*(0x1b - 3)) 以十进制表示的是: 263371*2^^(8*(27-3)) 使用|公元前. 我试过了 echo 263371*2^^(8*(27-3)) | bcexpr 263371*2^^(8*(27-3)) | bczsh: no matches found: 263371*2^^(8*(27-3)) 或尝试解决此问题 238348 * 2^1
我想计算一下:
0x0404cb * 2**(8*(0x1b - 3)) 以十进制表示的是: 263371*2^^(8*(27-3)) 使用|公元前. 我试过了 echo 263371*2^^(8*(27-3)) | bc expr 263371*2^^(8*(27-3)) | bc zsh: no matches found: 263371*2^^(8*(27-3)) 或尝试解决此问题 238348 * 2^176^ 我可以一次解决吗? 解决方法
bc“权力”运算符是^.您还必须引用所有内容以防止shell尝试执行历史替换和路径名扩展或将括号解释为子shell这样的操作:
$bc <<< '263371*2^(8*(27-3))' 1653206561150525499452195696179626311675293455763937233695932416 如果要从头开始处理初始表达式,可以使用ibase特殊变量将输入设置为十六进制并进行一些额外处理: eqn='0x0404cb * 2**(8*(0x1b - 3))' # Replace "**" with "^" eqn=${eqn//**/^} # Remove all "0x" prefixes eqn=${eqn//0x} # Set ibase to 16 and uppercase the equation bc <<< "ibase = 16; ${eqn^^}" 或者,而不是使用参数扩展,使用(GNU)sed更紧凑,更易读: sed 's/**/^/g;s/0x//g;s/.*/U&/;s/^/ibase = 16; /' <<< "$eqn" | bc (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |