构建long值数组的校验和

问题描述:

我在c#程序中有一个长数组的数组。现在我需要一个校验和(越小越好)来查看是否所有值都包含在我想与之比较的其他数组中。构建long值数组的校验和

它应该是一个简单的校验和,所以我可以在JavaScript/JQuery中使用它。有没有我可以使用的方法/代码片段?

背景:

我有定期连接(每10秒)我的C#web服务长期做下去值的列表,并将它的最后一个值一个javascript AJAX MVC项目。长的值是连续的,所以我只会发送自客户端上一次值以来的新值。但有时(1:1000)有一个新的长值,“较旧”且不连续。为了避免javascript不会得到这个值(因为它只获取最新值),我想添加一个校验和以查看它是否具有每个值。如果校验和不正确,它应该再次获取完整列表。

+2

你可以添加更多关于如何使用这个校验和的细节吗? – Justin 2010-08-02 17:45:10

+0

我添加了我的背景。 – Chris 2010-08-02 17:52:50

最简单的方法:

unchecked 
{ 
     long checksum = 0; 
     for(int i = 0; i < values.Length; i++) 
      checksum = checksum^values[i]; 
     return checksum; 
} 
+0

*如果*可以知道没有值将为负值,请将您的校验和设为安全值。 – 2010-08-02 18:05:46

+0

这些值为正值。我也可以在JavaScript中使用它吗?有没有像未经检查的东西?什么时候发生溢出(在c#中没有关系,因为它没有被选中,但在JavaScript中)? – Chris 2010-08-02 18:18:11

如果条目不会从列表中删除,你可以使用的所有对象的数量在列表中的“校验”。

但是,对我而言,不要仅仅根据数字检索新条目会更好。您可以基于服务器时间,因此服务器会记住何时添加了对象,并且客户端请求所有新对象,因为x