我需要在C#中开发一个不断增加的计数器。我正在考虑将GUID转换为long。在c#中可能吗?有没有其他的方式来开发一个越来越多的计数器?转换GUID为长
转换GUID为长
回答
不,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
我确定它不是。但这并不重要,因为没有提到安全性,因为要求没有提及 – sehe
只需要数组的起始字节,从而使得结果*远远不像它所馈送的GUID那样唯一* !!!!!! ! (这需要更多的感叹号!) –
把你的GUID索引放在一起吧!!!!!!!!!!!!!! – DeadlyChambers
问题是,远远超过了所有整数集长精度的GUID集。所以你真的正在缩小选择的基数。没有理由这样做。
如果你想继续增加一个数字而不用担心,有一个库IntX处理大数字。您可以将您的号码生成器的本地状态存储在文件或内存中,并且您的号码将不断增加。 (以及排序)
GUID是一个128位整数。长整型是一个有符号的64位整数。而ulong的值可以是0到18,446,744,073,709,551,615。够了吗?或者你想使用小数?
[__m128i](http://msdn.microsoft.com/en-us/library/26232t5c.aspx)... – sehe
- 1. 将Guid转换为Cassandra UUID
- 2. SSIS:将INT转换为GUID?
- 3. Flex:将GUID转换为Base64
- 4. 将guid转换为数值
- 5. 将GUID转换为varchar(32)
- 6. 将GUID转换为System.Drawing.Imaging.ImageFormat
- 7. 将URI转换为GUID
- 8. 将stringbuilder转换为guid
- 9. 将Raw(16)转换为GUID
- 10. 如何将GUID的一部分转换为长整型?
- 11. 转换为Guid,但接收不能转换为int错误
- 12. 如何将字符串转换为Guid
- 13. 无法将ProviderUserKey转换为GUID?
- 14. 无法将变量转换为Guid
- 15. 将GUID结构转换为LPCSTR
- 16. 将GUID转换为字符串
- 17. Powershell将整数转换为guid
- 18. 将MongoDB Rest的Guid转换为C#CLR
- 19. 将Lambda转换为Guid列表
- 20. 可能将字符串转换为GUID?
- 21. c#:将十六进制转换为GUID
- 22. 如何将字符串转换为Guid?
- 23. 无法将字符串转换为Guid
- 24. 如何将Guid []转换为String?
- 25. 将GUID转换为整数和返回
- 26. 将.NET Guid转换为MongoDB ObjectID
- 27. 如何将guid转换为* char
- 28. 将GUID转换为等价数字
- 29. 将对象转换为系统Guid
- 30. 将GUID数组转换为int数组
为什么要将GUID转换为long,如果您需要计数器? – Tigran
我不认为我理解这个问题,因为你不需要这个GUID。如果你只需要一个计数器,你只需要使用'long Counter = 0;'然后可以调用'long x = Counter;'当你需要使用它和'++ Counter'来增加它。你能澄清为什么你需要它作为一个GUID? – shelleybutterfly
无论如何,谁在统计GUID? – BoltClock