我在将以下代码从 C# 转换为 VB.NET 时遇到问题。
C# 代码
public static byte Crc8(byte[] data, int size) {
byte checksum = 0;
for (int i=0; i<=size; i++)
checksum += data[i];
return (byte)(-checksum);
}
VB.NET 代码
Public Shared Function Crc8(ByVal data As Byte(), ByVal size As Integer) As Byte
Dim checksum As Byte = 0
For i As Integer = 0 To size - 1
checksum += data(i)
Next
Return CByte(-checksum)
End Function
问题是 VB 代码导致“算术运算导致溢出”。错误。
似乎“+=”运算符的操作方式不同。在 VB 中,它实际上是在创建一个总和 (100 + 200 = 300),而在 C# 中,它是在对字节 (100 + 200 = 44) 执行某种操作。我似乎无法找到它在做什么操作。