我需要存储一系列值(如 25-50 或 100-200),但是为了避免大量的数据库重新设计和其他工作,我想使用一个Int32
来存储这两个数字。我意识到每个数字只有 16 位,但这很好。
因此,使用两个整数值非常容易。我可以做类似的事情:
int mask = 50; //Right bits will have 50
mask |= (25 << 16); //Left bits will have 25
Console.WriteLine("Mask is: {0}", mask);
Console.WriteLine("Left is: {0}", (mask >> 16));
Console.WriteLine("Right is: {0}", (mask & 0xFFFF));
现在,我有右 16 位存储值 50,左 16 位存储值 25。
那么问题是什么?
现在,我想使用相同的技术,但我想存储两个非整数。例如,1.5 和 1.75,或 2.00 和 2.25。.NET 似乎不支持float
、single
或. 另外,我最终还需要在 Javascript 中读取这些值,因此怀疑使用的任何位编码浮点是否在平台之间完全兼容。double
decimal
最好的方法是什么?我正在考虑的一种方法是只使用整数,但将所有内容除以 1000。这将使我在两个数字中都有 3 个小数点精度,尽管我必须将整个内容存储为 along
以存储超过 65 的任何内容。我是不确定这是否是最好的方法。也许我缺少一些简单的东西。