-
На всякий случай пример функций на VB для расчета CRC пакета и хэш-кода для имени параметра. Про пробелы не забывайте! Должно быть 4-е символа, кроме "." (ее считать не надо).
Public Function Hash(Value As String, isName As Boolean) As Long
Dim iBit As Byte
Dim vByte As Long
Dim i As Integer
Hash = 0
For i = 1 To Len(Value)
If isName Then
vByte = ByteCode(UCase(Mid(Value, i, 1)))
If Mid(Value, i + 1, 1) = "." Then
vByte = vByte + 1
i = i + 1
End If
vByte = vByte * 2
Else
vByte = Asc(Mid(Value, i, 1))
End If
For iBit = 1 To IIf(isName, 7, 8)
If Int((vByte Xor Int(Hash / 256)) / 128) > 0 Then
Hash = (Hash * 2) Mod 65536
Hash = (Hash Xor 36695) Mod 65536
Else
Hash = (Hash * 2) Mod 65536
End If
vByte = (vByte * 2) Mod 256
Next
Next
End Function
Public Function ByteCode(vByte As String) As Byte
Select Case vByte
Case "0" To "9": ByteCode = Asc(vByte) - Asc("0")
Case "A" To "Z": ByteCode = Asc(vByte) - Asc("A") + 10
Case "-": ByteCode = 36
Case "_": ByteCode = 37
Case "/": ByteCode = 38
Case " ": ByteCode = 39
End Select
ByteCode = ByteCode * 2
End Function
Ваши права
- Вы не можете создавать новые темы
- Вы не можете отвечать в темах
- Вы не можете прикреплять вложения
- Вы не можете редактировать свои сообщения
-
Правила форума