shell - 我需要一个带有两个二进制数的 XOR 输出作为 shell 脚本中的输入
问题描述
我正在尝试在 shell 中使用两个二进制数执行 XOR 位运算。如果,a=00001000 b=00110011 我的输出应该是 00111011
Shell 是否支持二进制数的异或运算?我也尝试从 http://phodd.net/gnu-bc/code/logic.bc下载 logic.bc 文件, 但它显示错误 Runtime error (func=(main), adr=270): Function xor没有定义的。 谁能帮我解决问题
解决方案
更新的答案
您的数字似乎是二进制数字字符串,因此您需要转换它们:
perl -e 'print (oct("0b".$ARGV[0])^oct("0b".$ARGV[1]))' 00111100 00001101
49
或者,如果您想要相同格式的答案:
perl -e 'printf("%.8b",oct("0b".$ARGV[0])^oct("0b".$ARGV[1]))' 00111100 00001101
00110001
原始答案
与其引入对下载晦涩脚本的依赖关系,不如bc
考虑利用已经内置的东西。
例如,Perl 内置在 Linux 和 macOS 上:
perl -e 'print ((0+$ARGV[0])^$ARGV[1])' 60 13
49
同样的PHP:
php -r 'echo (0+$argv[1])^$argv[2];' 60 13
49
你可能有awk
:
awk -v x=60 -v y=13 'BEGIN{print xor(x,y)}'
49
或 Python:
python -c 'import sys; print(int(sys.argv[1])^int(sys.argv[2]))' 60 13
49
推荐阅读
- regex - Redshift - 根据模式提取数据
- javascript - Js中未定义的变量
- python-3.x - Python 3.8:for 循环无限
- java - JavaFX 在 FlowPane 子项上使用 FilteredList
- android - 通过 Android 应用程序的 Chromebook 规范
- javascript - javascript onclick事件没有鼠标点击响应
- python - pip 安装包在与脚本相同的文件夹中
- maven - JBPM 7.36 的 Docker Container 无法在企业代理后面构建项目
- android - 无法从本地日期转换为伦敦日期对象
- android - 在异步模式下使用 MediaCodec,问题是,我没有得到 MediaCodec.BUFFER_FLAG_END_OF_STREAM