vb.net 中的校验和计算

Checksum calculation in vb.net

校验和根据以下公式计算:

Checksum = INV (data byte 1 ⊕ data byte 2 ⊕ ... ⊕ data byte 8)

为了形成校验和,各个数据字节通过模 256 算法相加。这涉及将溢出位添加到特定的中间结果。最后,整体结果反转。 我的尝试(我以这个十六进制数字为例,这些数字的正确结果是 &H33"):

  Private Sub Button46_Click(sender As Object, e As EventArgs) Handles Button46.Click
        Dim Sum As Byte = 0
        Dim Bytes() As Short = {&H22, &H22, &HAA, &HAA, &H55, &H55, &H44, &H44}
        For I As Integer = 0 To Bytes.Length - 1
            Sum += Bytes(I) Mod 10
        Next
        Sum = Not (Sum)
        RichTextBox1.Text = Hex(Sum.ToString)
    End Sub

显示溢出 exception.Also 我不知道如何 "add overrun bits" 有什么想法吗?

需要分别跟踪溢出和取模,如果要添加的话。这不是您的第一行“Checksum = INV (data byte 1 ⊕ data byte 2 ⊕ ... ⊕ data byte 8)”所表示的 - 您确定吗?代码将是这样的(给出 &H33):

Dim sum As Integer = 0
Dim bytes() As Byte = {&H22, &H22, &HAA, &HAA, &H55, &H55, &H44, &H44}
For i As Integer = 0 To bytes.Length - 1
    sum += bytes(i)
Next
Dim overflow = sum \ 256
Dim modulo = sum Mod 256
sum = Not (CByte((overflow + modulo) Mod 256))