次のコードを 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)。どのような操作を行っているのかわかりません。