IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Calcul du CRC32 en vb


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Calcul du CRC32 en vb
    Bonjour tout le monde !!
    Dites moi, je cherche à faire une petite fonction VB toute bébête qui me retourne le CRC32 d'un input de type String.
    Ex : =checkCRC32("HELLOWORLD") => devrait me retourner "f2743d92" (conformément aux implémentations disponibles sur http://www.fileformat.info/tool/hash...ext=HELLOWORLD ou encore http://www.zorc.breitbandkatze.de/crc.html ou encore bien d'autres sites.
    J'ai trouvé cette petite implémentation sur le ouaib :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    Public Function checkCRC32(str) As String
     
        Dim crc32Table(256) As Long
        crc32Table(0) = 0
        crc32Table(1) = 1996959894
        crc32Table(2) = -301047508
        crc32Table(3) = -1727442502
        crc32Table(4) = 124634137
        crc32Table(5) = 1886057615
        crc32Table(6) = -379345611
        crc32Table(7) = -1637575261
        crc32Table(8) = 249268274
        crc32Table(9) = 2044508324
        crc32Table(10) = -522852066
        crc32Table(11) = -1747789432
        crc32Table(12) = 162941995
        crc32Table(13) = 2125561021
        crc32Table(14) = -407360249
        crc32Table(15) = -1866523247
        crc32Table(16) = 498536548
        crc32Table(17) = 1789927666
        crc32Table(18) = -205950648
        crc32Table(19) = -2067906082
        crc32Table(20) = 450548861
        crc32Table(21) = 1843258603
        crc32Table(22) = -187386543
        crc32Table(23) = -2083289657
        crc32Table(24) = 325883990
        crc32Table(25) = 1684777152
        crc32Table(26) = -43845254
        crc32Table(27) = -1973040660
        crc32Table(28) = 335633487
        crc32Table(29) = 1661365465
        crc32Table(30) = -99664541
        crc32Table(31) = -1928851979
        crc32Table(32) = 997073096
        crc32Table(33) = 1281953886
        crc32Table(34) = -715111964
        crc32Table(35) = -1570279054
        crc32Table(36) = 1006888145
        crc32Table(37) = 1258607687
        crc32Table(38) = -770865667
        crc32Table(39) = -1526024853
        crc32Table(40) = 901097722
        crc32Table(41) = 1119000684
        crc32Table(42) = -608450090
        crc32Table(43) = -1396901568
        crc32Table(44) = 853044451
        crc32Table(45) = 1172266101
        crc32Table(46) = -589951537
        crc32Table(47) = -1412350631
        crc32Table(48) = 651767980
        crc32Table(49) = 1373503546
        crc32Table(50) = -925412992
        crc32Table(51) = -1076862698
        crc32Table(52) = 565507253
        crc32Table(53) = 1454621731
        crc32Table(54) = -809855591
        crc32Table(55) = -1195530993
        crc32Table(56) = 671266974
        crc32Table(57) = 1594198024
        crc32Table(58) = -972236366
        crc32Table(59) = -1324619484
        crc32Table(60) = 795835527
        crc32Table(61) = 1483230225
        crc32Table(62) = -1050600021
        crc32Table(63) = -1234817731
        crc32Table(64) = 1994146192
        crc32Table(65) = 31158534
        crc32Table(66) = -1731059524
        crc32Table(67) = -271249366
        crc32Table(68) = 1907459465
        crc32Table(69) = 112637215
        crc32Table(70) = -1614814043
        crc32Table(71) = -390540237
        crc32Table(72) = 2013776290
        crc32Table(73) = 251722036
        crc32Table(74) = -1777751922
        crc32Table(75) = -519137256
        crc32Table(76) = 2137656763
        crc32Table(77) = 141376813
        crc32Table(78) = -1855689577
        crc32Table(79) = -429695999
        crc32Table(80) = 1802195444
        crc32Table(81) = 476864866
        crc32Table(82) = -2056965928
        crc32Table(83) = -228458418
        crc32Table(84) = 1812370925
        crc32Table(85) = 453092731
        crc32Table(86) = -2113342271
        crc32Table(87) = -183516073
        crc32Table(88) = 1706088902
        crc32Table(89) = 314042704
        crc32Table(90) = -1950435094
        crc32Table(91) = -54949764
        crc32Table(92) = 1658658271
        crc32Table(93) = 366619977
        crc32Table(94) = -1932296973
        crc32Table(95) = -69972891
        crc32Table(96) = 1303535960
        crc32Table(97) = 984961486
        crc32Table(98) = -1547960204
        crc32Table(99) = -725929758
        crc32Table(100) = 1256170817
        crc32Table(101) = 1037604311
        crc32Table(102) = -1529756563
        crc32Table(103) = -740887301
        crc32Table(104) = 1131014506
        crc32Table(105) = 879679996
        crc32Table(106) = -1385723834
        crc32Table(107) = -631195440
        crc32Table(108) = 1141124467
        crc32Table(109) = 855842277
        crc32Table(110) = -1442165665
        crc32Table(111) = -586318647
        crc32Table(112) = 1342533948
        crc32Table(113) = 654459306
        crc32Table(114) = -1106571248
        crc32Table(115) = -921952122
        crc32Table(116) = 1466479909
        crc32Table(117) = 544179635
        crc32Table(118) = -1184443383
        crc32Table(119) = -832445281
        crc32Table(120) = 1591671054
        crc32Table(121) = 702138776
        crc32Table(122) = -1328506846
        crc32Table(123) = -942167884
        crc32Table(124) = 1504918807
        crc32Table(125) = 783551873
        crc32Table(126) = -1212326853
        crc32Table(127) = -1061524307
        crc32Table(128) = -306674912
        crc32Table(129) = -1698712650
        crc32Table(130) = 62317068
        crc32Table(131) = 1957810842
        crc32Table(132) = -355121351
        crc32Table(133) = -1647151185
        crc32Table(134) = 81470997
        crc32Table(135) = 1943803523
        crc32Table(136) = -480048366
        crc32Table(137) = -1805370492
        crc32Table(138) = 225274430
        crc32Table(139) = 2053790376
        crc32Table(140) = -468791541
        crc32Table(141) = -1828061283
        crc32Table(142) = 167816743
        crc32Table(143) = 2097651377
        crc32Table(144) = -267414716
        crc32Table(145) = -2029476910
        crc32Table(146) = 503444072
        crc32Table(147) = 1762050814
        crc32Table(148) = -144550051
        crc32Table(149) = -2140837941
        crc32Table(150) = 426522225
        crc32Table(151) = 1852507879
        crc32Table(152) = -19653770
        crc32Table(153) = -1982649376
        crc32Table(154) = 282753626
        crc32Table(155) = 1742555852
        crc32Table(156) = -105259153
        crc32Table(157) = -1900089351
        crc32Table(158) = 397917763
        crc32Table(159) = 1622183637
        crc32Table(160) = -690576408
        crc32Table(161) = -1580100738
        crc32Table(162) = 953729732
        crc32Table(163) = 1340076626
        crc32Table(164) = -776247311
        crc32Table(165) = -1497606297
        crc32Table(166) = 1068828381
        crc32Table(167) = 1219638859
        crc32Table(168) = -670225446
        crc32Table(169) = -1358292148
        crc32Table(170) = 906185462
        crc32Table(171) = 1090812512
        crc32Table(172) = -547295293
        crc32Table(173) = -1469587627
        crc32Table(174) = 829329135
        crc32Table(175) = 1181335161
        crc32Table(176) = -882789492
        crc32Table(177) = -1134132454
        crc32Table(178) = 628085408
        crc32Table(179) = 1382605366
        crc32Table(180) = -871598187
        crc32Table(181) = -1156888829
        crc32Table(182) = 570562233
        crc32Table(183) = 1426400815
        crc32Table(184) = -977650754
        crc32Table(185) = -1296233688
        crc32Table(186) = 733239954
        crc32Table(187) = 1555261956
        crc32Table(188) = -1026031705
        crc32Table(189) = -1244606671
        crc32Table(190) = 752459403
        crc32Table(191) = 1541320221
        crc32Table(192) = -1687895376
        crc32Table(193) = -328994266
        crc32Table(194) = 1969922972
        crc32Table(195) = 40735498
        crc32Table(196) = -1677130071
        crc32Table(197) = -351390145
        crc32Table(198) = 1913087877
        crc32Table(199) = 83908371
        crc32Table(200) = -1782625662
        crc32Table(201) = -491226604
        crc32Table(202) = 2075208622
        crc32Table(203) = 213261112
        crc32Table(204) = -1831694693
        crc32Table(205) = -438977011
        crc32Table(206) = 2094854071
        crc32Table(207) = 198958881
        crc32Table(208) = -2032938284
        crc32Table(209) = -237706686
        crc32Table(210) = 1759359992
        crc32Table(211) = 534414190
        crc32Table(212) = -2118248755
        crc32Table(213) = -155638181
        crc32Table(214) = 1873836001
        crc32Table(215) = 414664567
        crc32Table(216) = -2012718362
        crc32Table(217) = -15766928
        crc32Table(218) = 1711684554
        crc32Table(219) = 285281116
        crc32Table(220) = -1889165569
        crc32Table(221) = -127750551
        crc32Table(222) = 1634467795
        crc32Table(223) = 376229701
        crc32Table(224) = -1609899400
        crc32Table(225) = -686959890
        crc32Table(226) = 1308918612
        crc32Table(227) = 956543938
        crc32Table(228) = -1486412191
        crc32Table(229) = -799009033
        crc32Table(230) = 1231636301
        crc32Table(231) = 1047427035
        crc32Table(232) = -1362007478
        crc32Table(233) = -640263460
        crc32Table(234) = 1088359270
        crc32Table(235) = 936918000
        crc32Table(236) = -1447252397
        crc32Table(237) = -558129467
        crc32Table(238) = 1202900863
        crc32Table(239) = 817233897
        crc32Table(240) = -1111625188
        crc32Table(241) = -893730166
        crc32Table(242) = 1404277552
        crc32Table(243) = 615818150
        crc32Table(244) = -1160759803
        crc32Table(245) = -841546093
        crc32Table(246) = 1423857449
        crc32Table(247) = 601450431
        crc32Table(248) = -1285129682
        crc32Table(249) = -1000256840
        crc32Table(250) = 1567103746
        crc32Table(251) = 711928724
        crc32Table(252) = -1274298825
        crc32Table(253) = -1022587231
        crc32Table(254) = 1510334235
        crc32Table(255) = 755167117
     
       Dim crc32Result As Long
       crc32Result = &HFFFFFFFF
     
       Dim i As Integer
       Dim iLookup As Integer
       Dim buffer() As Byte
       buffer = StrConv(str, vbFromUnicode)
     
       For i = LBound(buffer) To UBound(buffer)
          iLookup = (crc32Result And &HFF) Xor buffer(i)
          crc32Result = ((crc32Result And &HFFFFFF00) \ &H100) And 16777215
          ' nasty shr 8 with vb :/
         crc32Result = crc32Result Xor crc32Table(iLookup)
       Next i
     
       checkCRC32 = Not (crc32Result)
     
    End Function
    Bon le gars avait l'air de s'y connaitre alors j'ai fait un petit copié collé, mais là je n'obtiens pas le bon résultat, j'obtiens : -227263086 ...

    Quelqu'un s'y connait un peu en CRC32 ici ?? Quelqu'un peu m'aider svp ??

    Merci par avance.

    Bonne journée

    Christophe
    Dernière modification par AlainTech ; 02/02/2014 à 02h22.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Sujet résolu : un DECHEX sur le retour de la fonction a résolu le pb. Merci tout de même pour votre aide !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. CRC32, Question de calcul
    Par Array dans le forum Mathématiques
    Réponses: 11
    Dernier message: 24/11/2013, 02h01
  2. Calculer un CRC32 type ethernet
    Par geek-59600 dans le forum C
    Réponses: 2
    Dernier message: 27/01/2012, 09h17
  3. Calculer le CRC32 d'une chaine de caractère
    Par bumbolol dans le forum Caml
    Réponses: 11
    Dernier message: 11/04/2010, 13h31
  4. Réponses: 3
    Dernier message: 01/07/2009, 17h38
  5. calcul du crc32
    Par lesultan2007 dans le forum VB.NET
    Réponses: 3
    Dernier message: 13/03/2009, 11h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo