CRC32
Bonjour tout le monde !!
Je suis un petit nouveau sur ce site, alors je vais tenter de bien m'intégrer ...
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.htm?text=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 :
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 FunctionBon 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
Bonjour
Modifies la formule
=DECHEX(checkCRC32("HELLOWORLD"))Il y a FF en plus au début
Normal ou pas normal ?
Super !! Merci Banzai64 !!
Je ne sais pas d'où viennent ce "FF" du début, mais je vais les ignorer ! Merci beaucoup !!
Bonjour
Je ne sais pas trop non plus
Tout ce que j'ai pu trouver
DECHEX(nombre, [nb_car])
nombre Obligatoire. Représente le nombre entier décimal à convertir. Si nombre est négatif, nb_car n’est pas pris en compte, et DECHEX renvoie un nombre hexadécimal de 10 caractères (40 bits), dans lequel le bit de poids fort est le bit de signe. Les 39 autres bits sont des bits de grandeur. Les nombres négatifs sont représentés à l’aide de la notation de complément à 2.