And*_*res 10 c# sql-server checksum
我在sql server 2008 R2中使用chechsum函数,我想在C#app中获得相同的int值.在c#中是否有任何等效的方法返回像sql checksum函数这样的值?感谢名单
Dan*_*Dan 14
在SQL Server论坛上,在此页面上说明:
SQL Server中的内置CHECKUM函数基于一系列4位左旋转xor运算.有关 更多说明,请参阅此帖子.
我能够将BINARY_CHECKSUM移植到c#,它似乎正在工作......我稍后会看看普通的CHECKSUM ......
private int SQLBinaryChecksum(string text)
{
long sum = 0;
byte overflow;
for (int i = 0; i < text.Length; i++)
{
sum = (long)((16 * sum) ^ Convert.ToUInt32(text[i]));
overflow = (byte)(sum / 4294967296);
sum = sum - overflow * 4294967296;
sum = sum ^ overflow;
}
if (sum > 2147483647)
sum = sum - 4294967296;
else if (sum >= 32768 && sum <= 65535)
sum = sum - 65536;
else if (sum >= 128 && sum <= 255)
sum = sum - 256;
return (int)sum;
}
Run Code Online (Sandbox Code Playgroud)
CHECKSUM
文档没有透露它如何计算哈希值。如果您想要一个可以在 T-SQL 和 C# 中使用的哈希,请从HashBytes支持的算法中进行选择