我用powershell编写了一系列if表达式,其中 to n case可能是正确的。
if (!(statement)) {increase errorcode by 1}
if (!(statement)) {increase errorcode by 2}
if (!(statement)) {increase errorcode by 4}
if (!(statement)) {increase errorcode by 8}所以我想,通过在每一种可能性的错误代码中加上下一个2的倍数,我得到了每个真实情况的可能组合的唯一和。
既然我在数学上并没有那么开明:只有根据检查if表达式后设置的错误代码,确定哪些情况是真的最简单的方法是什么?
发布于 2016-05-18 17:47:48
您可以使用-band检查是否设置了位以验证大小写是否为真。例如:
$i = 0
$caseFlags = @{
"Case1" = 1
"Case2" = 2
"Case3" = 4
"Case4" = 8
}
if ($true) { $i += $caseFlags["Case1"] }
if ($true) { $i += $caseFlags["Case2"] }
if ($true) { $i += $caseFlags["Case3"] }
if ($false) { $i += $caseFlags["Case4"] }
"`$i is $i"
"Case1 true? $([bool]($i -band $caseFlags["Case1"]))"
"Case2 true? $([bool]($i -band $caseFlags["Case2"]))"
"Case3 true? $([bool]($i -band $caseFlags["Case3"]))"
"Case4 true? $([bool]($i -band $caseFlags["Case4"]))"输出:
Case1 true? True
Case2 true? True
Case3 true? True
Case4 true? False如果你也需要计算真实情况,你可以使用@mjolinor的答案。
发布于 2016-05-18 16:12:06
计算真实案件数量的一种选择是:
@([char[]][convert]::ToString($errorcode, 2) -eq '1').Count该语句将数字的二进制表示形式转换为字符串(例如,5→"101"),将字符串转换为字符数组(['1', '0', '1']),并对具有值'1' (@(... -eq '1').Count)的字符进行计数。
https://stackoverflow.com/questions/37304765
复制相似问题