求Perl/Bash实现2-27转5位固定二进制并反转的简洁写法
简洁实现:数字转5位反转二进制(Perl & Bash)
嗨,我来帮你把这个需求简化!针对你要将2到27的数字转换为固定5位二进制、再反转输出的需求,这里有几种非常紧凑的写法:
Perl 单行写法
直接利用Perl的范围运算符、sprintf和reverse,一行就能完成所有逻辑:
print reverse(sprintf("%05b", $_)), "\n" for 2..27;
解释:
2..27:自动遍历2到27的所有整数sprintf("%05b", $_):将每个数字格式化为5位二进制字符串(不足5位时自动补前导0)reverse(...):反转二进制字符串- 最后通过
print输出结果并换行
如果想让输出更高效,也可以用join把所有结果拼接后一次性打印:
print join "\n", map { reverse sprintf "%05b", $_ } 2..27;
Bash 单行写法
用Bash的内置语法结合bc(二进制转换)和rev(字符串反转)工具,一行搞定:
for i in {2..27}; do printf "%05d\n" "$(bc <<< "obase=2;$i")" | rev; done
解释:
{2..27}:生成2到27的数字序列bc <<< "obase=2;$i":调用bc将十进制数转为二进制字符串printf "%05d\n":将二进制字符串补前导0,确保长度为5rev:反转处理后的5位二进制字符串,最终输出
内容的提问来源于stack exchange,提问作者Ramneek Singh Kakkar
相关产品推荐
相关产品推荐

