ардуино vb.net переполнение суммы ASCII

#vb.net #arduino

Вопрос:

У меня возникает такая проблема: операция арифметического переполнения

Пожалуйста, скажите, что не так, большое спасибо

 'I will read 999 ASCII chars from the serial buffer
'999 char * 255 max value of ASCII = 254,745 
'For 254,745 I will need Long to handle this size
'I used Long to handle the big sum of the received data so I will not get
'summation overflow

Dim int_sum_of_packet As Long = 0

'I took the data from serial buffer and saved it into string
'string name is = str_packet_data_without_delimiter

'Get each char inside the received string
For Each ch As Char In str_packet_data_without_delimiter
    'do the summation
    int_sum_of_packet = int_sum_of_packet   Convert.ToByte(ch)
Next

'Now get the LSB (least significant Byte)
'Note: Long data type is 8 Bytes

Dim lsb As Byte
lsb = CByte(amp;H000000FF amp; int_sum_of_packet)
 

Комментарии:

1. Комментарий неверен, Long составляет 8 байт (это всего 4 байта в VBA и старых версиях VB, где основным языком является VBA). Вам может потребоваться, чтобы целочисленная математика была явно без знака, т. Е., возможно, потребуется ULong или UInteger .

2. amp; является конкатенацией строк, так amp;H000000FF amp; int_sum_of_packet что это то же самое, что "255" amp; int_sum_of_packet.ToString() . Очевидно, вы хотели And . Используйте Option Strict On , чтобы избежать этой проблемы.

3. кажется, я путаю C с vb.net , большое спасибо , я постараюсь , Спасибо вам , ребята, с большой любовью.

4. Это сработало , большое спасибо.