📜  c# checksum - C# (1)

📅  最后修改于: 2023-12-03 14:39:42.456000             🧑  作者: Mango

C# Checksum

在计算机科学中,Checksum是一种错误检查机制,用于检测在数据传输或数据存储的过程中出现的错误。

在C#中,我们可以使用以下方法来生成Checksum。

计算Byte数组的Checksum

下面的方法接受一个Byte数组作为输入,并返回16进制格式的Checksum。

public string GetChecksum(byte[] bytes)
{
    uint sum = 0;
    for (int i = 0; i < bytes.Length; i += 2)
    {
        sum += (ushort)((bytes[i] << 8) | (bytes[i + 1]));
    }

    sum = (sum >> 16) + (sum & 0xFFFF);
    sum += (sum >> 16);

    return (~sum).ToString("X");
}
计算字符串的Checksum

下面的方法接受字符串作为输入,并返回16进制格式的Checksum。

public string GetChecksum(string input)
{
    byte[] bytes = Encoding.Unicode.GetBytes(input);
    uint sum = 0;
    for (int i = 0; i < bytes.Length; i += 2)
    {
        sum += (ushort)((bytes[i] << 8) | (bytes[i + 1]));
    }

    sum = (sum >> 16) + (sum & 0xFFFF);
    sum += (sum >> 16);

    return (~sum).ToString("X");
}
示例

以下是如何使用上述方法来生成Checksum的示例。

byte[] bytes = { 0x01, 0x03, 0x00, 0x00, 0x00, 0x10 };
string checksum = GetChecksum(bytes);
Console.WriteLine(checksum);
// 输出:FFEF
string input = "Hello, world!";
string checksum = GetChecksum(input);
Console.WriteLine(checksum);
// 输出:C7BF

以上代码片段以markdown格式返回,并且代码片段使用markdown标记。