在c#中添加多个字节数组

时间:2012-10-17 22:53:23

标签: c# arrays binary byte

我正在开发一个遗留系统,它使用字节数组来获得权限级别 例如:
00 00 00 00 00 00 00 01表示他们具有“完全控制”
00 00 00 00 00 00 00 02表示他们有“添加控制”
00 00 00 00 00 00 00 04表示他们有“删除控制”

因此,如果用户拥有“00 00 00 00 00 00 00 07”,则意味着他们拥有全部3个(据我已经向我解释过)。

现在,我的问题是我需要知道在创建/检查记录时如何到达“0x07” 我不知道实际组合0x01,0x02和0x04的语法,所以我推出了0x07。

3 个答案:

答案 0 :(得分:1)

你或他们在一起:

0x01 | 0x02 | 0x04 == 0x07

如果要检查候选字节b中的各个位:

Full Control   == b & 0x01
Add Control    == b & 0x02
Delete Control == b & 0x04

答案 1 :(得分:0)

你正在寻找OR操作符。

IMO,处理它的一种干净方法是使用枚举:

[Flags]
public enum Permisions
{
    FullControl = 0x1,
    AddControl = 0x2,
    DeleteControl = 0x4
}

然后,在您的代码中,您可以执行以下操作:

Permissions userPermissions = Permissions.AddControl | Permissions.DeleteControl;
bool canDelete = userPermissions.HasFlag(Permissions.DeleteControl);

答案 2 :(得分:0)

您还可以使用BitConverter.ToUInt64将8字节数组转换为ulong数组。之后,您将能够对这些ulongs使用常规按位运算,并在必要时使用BitConverter.GetBytes将结果转换回字节数组。

如果必须重复处理权限,可能需要为此实现一个小包装器。