http://www.netfor2.com/checksum.html
http://blog.csdn.net/li_xiang1102/article/details/6901660
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.Threading;
namespace Test
{
class Program
{
static void Main(string[] args)
{
Random ran = new Random();
byte[] buf = new byte[256];
for (int i = 0; i < buf.Length; ++i) buf[i] = Convert.ToByte(ran.Next(256));
UInt32 sum1 = 0;
for (int i = 0; i < buf.Length; i += 2)
{
UInt32 tmp = buf[i];
tmp = (tmp << 8) + buf[i + 1];
sum1 += tmp;
}
sum1 = (sum1 & 0xFFFF) + (sum1 >> 16);
if ((sum1 & 0xFFFF0000) > 0) sum1 += 1;
sum1 = 0xFFFF & (~sum1);
Console.WriteLine("{0:X4}", sum1);
sum1 = 0;
for (int i = 0; i < buf.Length; i += 2)
{
UInt32 tmp = buf[i + 1];
tmp = (tmp << 8) + buf[i];
sum1 += tmp;
}
sum1 = (sum1 & 0xFFFF) + (sum1 >> 16);
if ((sum1 & 0xFFFF0000) > 0) sum1 += 1;
sum1 = 0xFFFF & (~sum1);
Console.WriteLine("{0:X4}", sum1);
Console.ReadLine();
}
}
}