Я раскалываю голову с вычислением CRC8, используя Excel VBA. Я написал функцию в VBA, которая возвращает значение CRC8, которое впоследствии может быть сохранено в ячейке. Тем не менее, при печати же я получаю сообщение об ошибке «OverFlow».Расчет CRC8 для Excel VBA
Пожалуйста, предложите ... Вот фрагмент кода.
Я получаю переполнение в функции в "ShiftLeft = Num * (2^мест)"
Function CRCPrateek(CRCrng As Range) As Integer
Dim CRC As Integer
Dim length As Integer
Dim Hexbyte As Integer
Dim i As Integer
'Initial CRC seed is Zero CRC = H00
'The real part of the CRC. Where I commented "Polynomial", it used to be a # define
'Polynomial 7. 'I replaced the word Polynomial with 7, however that means the 7 may
'be subject to change depending on the version of the crc you are running.
'To loop it for each cell in the range
For Each cel In CRCrng
'Verify if there is atleast one cell to work on
If Len(cel) > 0 Then
Hexbyte = cel.Value
CRC = CRC Xor Hexbyte
For i = 0 To 7
If Not CRC And H80 Then
CRC = ShiftLeft(CRC, 1)
CRC = CRC Xor 7
Else
CRC = ShiftLeft(CRC, 1)
End If
Next
End If
Next
CRCPrateek = CRC
End Function
Function ShiftLeft(Num As Integer, Places As Integer) As Integer
ShiftLeft = Num * (2^Places)
End Function
Изменить все ваши ** ** Целые заявления к ** Long **. –
, но я получаю 1 байт CRC? По моему пониманию я должен получить 1 байт для CRC8 _ATM. –
Я изменил все объявления на байты и долго, но все же я получаю ошибку переполнения. –