我现在有16位的CRC算法。还请问一下。改的话怎么改

解决方案 »

  1.   

    如果你觉得有价值,就多加点分。
    原来是为56bit数据求CRC写的,你根据需要改写一下吧。'*********************************************************************'
    '8-bit table-driven CRC algorithm for 56-bit data
    'poly=&H23
    '*********************************************************************'
    Dim Data(7) As Byte
    Dim bytCRC As BytePublic Function CRC_8(ByVal strData As String) As String
    Dim i As IntegerFor i = 0 To 7
    Data(i) = Val("&H" & Mid(strData, i * 2 + 1, 2))
    Next i
    'If Len(strData) = 14 Then Data(7) = 0
    For i = 0 To 6
    Data(i + 1) = Data(i + 1) Xor Table_Value(Data(i))
    Next i
    CRC_8 = IIf(Data(7) < 16, "0", "") & Hex(Data(7))
    End FunctionPrivate Function Table_Value(ByVal index As Byte) As Byte
    Table_Value = Choose(index + 1, _
    &H0, &H23, &H46, &H65, &H8C, &HAF, &HCA, &HE9, &H3B, &H18, &H7D, &H5E, &HB7, &H94, &HF1, &HD2, _
    &H76, &H55, &H30, &H13, &HFA, &HD9, &HBC, &H9F, &H4D, &H6E, &HB, &H28, &HC1, &HE2, &H87, &HA4, _
    &HEC, &HCF, &HAA, &H89, &H60, &H43, &H26, &H5, &HD7, &HF4, &H91, &HB2, &H5B, &H78, &H1D, &H3E, _
    &H9A, &HB9, &HDC, &HFF, &H16, &H35, &H50, &H73, &HA1, &H82, &HE7, &HC4, &H2D, &HE, &H6B, &H48, _
    &HFB, &HD8, &HBD, &H9E, &H77, &H54, &H31, &H12, &HC0, &HE3, &H86, &HA5, &H4C, &H6F, &HA, &H29, _
    &H8D, &HAE, &HCB, &HE8, &H1, &H22, &H47, &H64, &HB6, &H95, &HF0, &HD3, &H3A, &H19, &H7C, &H5F, _
    &H17, &H34, &H51, &H72, &H9B, &HB8, &HDD, &HFE, &H2C, &HF, &H6A, &H49, &HA0, &H83, &HE6, &HC5, _
    &H61, &H42, &H27, &H4, &HED, &HCE, &HAB, &H88, &H5A, &H79, &H1C, &H3F, &HD6, &HF5, &H90, &HB3, _
    &HD5, &HF6, &H93, &HB0, &H59, &H7A, &H1F, &H3C, &HEE, &HCD, &HA8, &H8B, &H62, &H41, &H24, &H7, _
    &HA3, &H80, &HE5, &HC6, &H2F, &HC, &H69, &H4A, &H98, &HBB, &HDE, &HFD, &H14, &H37, &H52, &H71, _
    &H39, &H1A, &H7F, &H5C, &HB5, &H96, &HF3, &HD0, &H2, &H21, &H44, &H67, &H8E, &HAD, &HC8, &HEB, _
    &H4F, &H6C, &H9, &H2A, &HC3, &HE0, &H85, &HA6, &H74, &H57, &H32, &H11, &HF8, &HDB, &HBE, &H9D, _
    &H2E, &HD, &H68, &H4B, &HA2, &H81, &HE4, &HC7, &H15, &H36, &H53, &H70, &H99, &HBA, &HDF, &HFC, _
    &H58, &H7B, &H1E, &H3D, &HD4, &HF7, &H92, &HB1, &H63, &H40, &H25, &H6, &HEF, &HCC, &HA9, &H8A, _
    &HC2, &HE1, &H84, &HA7, &H4E, &H6D, &H8, &H2B, &HF9, &HDA, &HBF, &H9C, &H75, &H56, &H33, &H10, _
    &HB4, &H97, &HF2, &HD1, &H38, &H1B, &H7E, &H5D, &H8F, &HAC, &HC9, &HEA, &H3, &H20, &H45, &H66)
    End Function