将GUID转换为long

我需要在C#中开发一个everSing计数器。 我正在考虑将GUID转换为long。 这可能在c#中吗? 有没有其他方法来发展一个不断增加的柜台?

不, GUID是128位,所以不适合你的长,因为那是64位。 System.Decimal是128位,所以会让你走很远的路,但当然也有它的限制。 即使您将计数器保存在字符串中,它也有其限制。 计算机也有限制,你必须找到一个足够大的计算机,以便你可以继续一段时间。

编辑:

在.Net 4.0中有一个BigInteger可能相当大,但请记住,即使它有其限制,因为它必须适合内存。

你可以试试这样的东西。

 byte[] gb = Guid.NewGuid().ToByteArray(); int i = BitConverter.ToInt32(gb,0); long l = BitConverter.ToInt64(gb,0); 

我不确定它是否非常安全。 :p

GUID是128位整数。 long是有符号的64位整数。 虽然ulong的值可以是0到18,446,744,073,709,551,615。 够了吗? 或者你想使用小数?

问题是GUID的集合远远超过了所有整数长度精度的集合。 所以你真的在缩小选择的基数。 没有充分的理由这样做。

如果你想继续增加一个数字而不用担心它,那么有一个库IntX可以处理大数字。 您可以将数字生成器的本地状态存储在文件或内存中,并且您的数字会不断增加。 (好吧)