我有以下预定义代码表示二进制位图中的索引:
0 = standard
1 = special
2 = regular
3 = late
4 = early
5 = on time
6 = generic
7 = rfu
我将作为输入的示例值为213,二进制为11010101。索引0,2,4,6和7的位翻转表示此记录为: 标准+常规+早期+通用+ rfu。
我试图在perl中弄清楚如何获取二进制数据并构建一个字符串,如上面提到的代码+代码+代码等。
非常感谢任何帮助。感谢。
编辑:我对如何做到这一点的想法是:
有没有更好的方法来解决这个问题?
答案 0 :(得分:3)
您可以测试从0到7的输入位,并仅采用已设置的位
my $in = 213;
my @r = ("standard","special","regular","late","early","on time","generic","rfu");
print join " + ", @r[ grep { $in & (1 << $_) } 0 .. $#r ];
# or
# print join " + ", map { $in & (1<<$_) ? $r[$_] : () } 0 .. $#r;
输出
standard + regular + early + generic + rfu