我有一个表示32位掩码的整数输入。
此掩码与长度为32的字符串数组并列。
有时字符串数组将包含空值或空字符串。在这些情况下,我想从掩码中“删除”null-or-empty-string位。
此映射涉及将所有后续位移到右侧:
"d" "c" null "a" -> "d" "c" "a"
1 1 1 1 -> 0 1 1 1
最后,我希望能够在完成它时取消映射这个掩码。在这种情况下,我会在字符串数组中存在null-or-empty-string的地方插入零。
字符串数组在这些映射之间不会改变,所以我不担心数据会失去同步。
不使用LINQ或lambda表达式,我该如何实现这些方法?
private static readonly string[] m_Names;
public static int MapToNames(int mask)
{
}
public static int MapFromNames(int mask)
{
}
我一直在看BitArray类,但它似乎没有用,因为它没有提供转换为/从整数转换的方法。
答案 0 :(得分:0)
我知道这不是你问题的答案,但考虑在integer
字段中保存位掩码值,就像所有位掩码字段的总和一样。它易于控制和维护。如何检查位掩码值。
if(bitmaskIntValue & value)
{
}
示例:您有bitmaskIntValue = 10-> 2 ^ 1 + 2 ^ 3
if(bitmaskIntValue & 2)
{
//first or second input is checked.(depending from where you start 2^0 or 2^1)
}