映射整数位掩码

时间:2014-09-21 14:12:46

标签: c# map mask bit

我有一个表示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类,但它似乎没有用,因为它没有提供转换为/从整数转换的方法。

1 个答案:

答案 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)
}