如果我有数字 1、2、3、4、5 和 6,我想以尽可能小的方式存储它们的一些组合,我该怎么做?
例如,我可能想要存储 1、4 和 5。或者可能是 2、4、5 和 6。或者甚至可能是所有六个数字。我将始终至少有一个号码需要存储。我想我可能已经看到这是通过移位完成的,但我不完全理解它是如何工作的。无论如何,我的最终目标是节省绝对最大的空间量,因为这些值需要存储在存储空间极小的硬件设备上。
编辑----------------------------------------
感谢大家提出的所有宝贵建议。我只是想澄清一下,我的应用程序中的实现不一定需要尽可能小,只是我理解并且对我身后的其他开发人员有意义的东西。最重要的是能够以尽可能小的方式表示这些值,因为我最终必须构建一个包含其他几个值的字节数组,并将其全部写入存储空间非常有限的设备。再次感谢大家的宝贵建议!
最佳答案
[Flags]
public enum NumberEnum : byte
{
None = 0,
One = 1,
Two = 2,
Three = 4,
Four = 8,
Five = 16,
Six = 32
};
public string ExampleMethodWithNumberCombinationsAsAEnum(NumberEnum filterFlags = 0)
{
if ((filterFlags & NumberEnum.One) == NumberEnum.One)
{
//Do something with one
}
if (((filterFlags & NumberEnum.One) == NumberEnum.One) && ((filterFlags & NumberEnum.Two) == NumberEnum.Two))
{
//Do something with one & two
}
}
关于c# - 存储六个单位的最小可能方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14309865/