位串的枚举列表
List of enums to bit string
我已经创建了一个控制访问的权限枚举标志:
[Flags]
public enum PermissionEnum
{
None = 0,
Read = 1,
Write = 2,
Delete = 4,
All = 7
}
如果有人请求访问,不同的枚举值将被添加到列表中:
List<PermissionEnum> permissions = new List<PermissionEnum> { 1, 4 }
如何将枚举列表展平为位字符串?
例如。
[1,4] = "101"
步骤 1
将您的标志列表合并为一个枚举值:
PermissionEnum combined = permissions.Aggregate(PermissionEnum.None,
(cmb, perm) => cmb | perm);
步骤 2
将组合值转换为位串:
string bitString = Convert.ToString((int)combined, 2);
请注意,如果您可以更改界面以便您只获取组合枚举而不是列表,则可以完全避免第 1 步。
你做错了。您应该存储在单个 PermissionEnum 变量中,而不是列表,并且对于要添加的每个权限,执行按位或:
PermissionEnum pe = PermissionEnum.None; //Current value:0
pe |= PermissionEnum.Read; //Add Read permission. Current value: 1
pe |= PermissionEnum.Delete;//Add Delete permission. Current value: 5
然后你可以显示将int转换为字符串的值:
string result = Convert.ToString((int)pe, 2); //yields "101"
要删除权限,请使用按位 and
和按位 not
pe &= ~PermissionEnum.Read; //Removes Read permission. Current value: 4
此外,要检查是否设置了某些权限,请使用按位 and
并检查是否大于 0:
bool canRead = (pe & PermissionEnum.Read) > 0;
我已经创建了一个控制访问的权限枚举标志:
[Flags]
public enum PermissionEnum
{
None = 0,
Read = 1,
Write = 2,
Delete = 4,
All = 7
}
如果有人请求访问,不同的枚举值将被添加到列表中:
List<PermissionEnum> permissions = new List<PermissionEnum> { 1, 4 }
如何将枚举列表展平为位字符串? 例如。
[1,4] = "101"
步骤 1
将您的标志列表合并为一个枚举值:
PermissionEnum combined = permissions.Aggregate(PermissionEnum.None,
(cmb, perm) => cmb | perm);
步骤 2
将组合值转换为位串:
string bitString = Convert.ToString((int)combined, 2);
请注意,如果您可以更改界面以便您只获取组合枚举而不是列表,则可以完全避免第 1 步。
你做错了。您应该存储在单个 PermissionEnum 变量中,而不是列表,并且对于要添加的每个权限,执行按位或:
PermissionEnum pe = PermissionEnum.None; //Current value:0
pe |= PermissionEnum.Read; //Add Read permission. Current value: 1
pe |= PermissionEnum.Delete;//Add Delete permission. Current value: 5
然后你可以显示将int转换为字符串的值:
string result = Convert.ToString((int)pe, 2); //yields "101"
要删除权限,请使用按位 and
和按位 not
pe &= ~PermissionEnum.Read; //Removes Read permission. Current value: 4
此外,要检查是否设置了某些权限,请使用按位 and
并检查是否大于 0:
bool canRead = (pe & PermissionEnum.Read) > 0;