5

对于这个问题相当模糊的性质,我深表歉意,我从来没有正式学习过编程,在这种情况下,谷歌对于像我这样的自助者来说毫无用处,因为关键词非常模棱两可。

我正在编写几个将选项列表编码和解码为 Long 的函数,以便它们可以轻松地在应用程序中传递,你知道这种事情:

1 - 苹果
2 - 橙子
4 - 香蕉
8 - 李子

在这种情况下,数字 11 代表 Apple、Orange 和 Plum。

我已经让它工作了,但我看到它一直在使用,所以假设该技术有一个通用名称,毫无疑问,目前我无法获得各种最佳实践和聪明的算法。

编辑:谢谢大家,我知道答案会很快到来:)

4

4 回答 4

12

位标志。这是一种用作位掩码一部分的技术。

0001 - 苹果
0010 - 橘子
0100 - 香蕉
1000 - 李子

每个 1 是标记位。

现在您可以使用这些数字轻松执行按位运算:

if((11 & Apple) == Apple) // The Apple Flag is set
{
    // Do Something
}
于 2010-06-01T15:18:19.803 回答
3

位域:http ://en.wikipedia.org/wiki/Bit_field

于 2010-06-01T15:19:37.690 回答
2

位标志

         

于 2010-06-01T15:18:56.920 回答
1

通过 c# Flags 属性的帮助,我将使用一个位字段或一组标志

有点相关,在硬件中也有one-hot 编码,尽管这意味着你没有设置标志的组合

于 2010-06-01T15:21:58.297 回答