找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 5304|回复: 3

CRC32算法---改自阿杰的C源码

[复制链接]

76

主题

375

回帖

0

精华

铜牌会员

积分
231
发表于 2009-5-20 08:51:20 | 显示全部楼层 |阅读模式
<p>本来在C/C++区回复阿杰的,但发完才发现回复别人的帖子不能发附件,所以在这里重发了,以下是代码,由FB0.20编译通过,过几天再发个VB的上来,不过VB要做位运算确实是个麻烦事</p>
<p><font face="Verdana">#Include "windows.bi"<br/>Dim Shared As UInteger crcTable(0 To 255) =&gt;{&amp;H0, &amp;H77073096, &amp;Hee0e612c, &amp;H990951ba, &amp;H76dc419, &amp;H706af48f, &amp;He963a535, &amp;H9e6495a3, _&nbsp; <br/>&nbsp; &amp;Hedb8832, &amp;H79dcb8a4, &amp;He0d5e91e, &amp;H97d2d988, &amp;H9b64c2b, &amp;H7eb17cbd, &amp;He7b82d07, &amp;H90bf1d91, _<br/>&nbsp; &amp;H1db71064, &amp;H6ab020f2, &amp;Hf3b97148, &amp;H84be41de, &amp;H1adad47d, &amp;H6ddde4eb, &amp;Hf4d4b551, &amp;H83d385c7, _<br/>&nbsp; &amp;H136c9856, &amp;H646ba8c0, &amp;Hfd62f97a, &amp;H8a65c9ec, &amp;H14015c4f, &amp;H63066cd9, &amp;Hfa0f3d63, &amp;H8d080df5, _<br/>&nbsp; &amp;H3b6e20c8, &amp;H4c69105e, &amp;Hd56041e4, &amp;Ha2677172, &amp;H3c03e4d1, &amp;H4b04d447, &amp;Hd20d85fd, &amp;Ha50ab56b, _<br/>&nbsp; &amp;H35b5a8fa, &amp;H42b2986c, &amp;Hdbbbc9d6, &amp;Hacbcf940, &amp;H32d86ce3, &amp;H45df5c75, &amp;Hdcd60dcf, &amp;Habd13d59, _<br/>&nbsp; &amp;H26d930ac, &amp;H51de003a, &amp;Hc8d75180, &amp;Hbfd06116, &amp;H21b4f4b5, &amp;H56b3c423, &amp;Hcfba9599, &amp;Hb8bda50f, _<br/>&nbsp; &amp;H2802b89e, &amp;H5f058808, &amp;Hc60cd9b2, &amp;Hb10be924, &amp;H2f6f7c87, &amp;H58684c11, &amp;Hc1611dab, &amp;Hb6662d3d, _<br/>&nbsp; &amp;H76dc4190, &amp;H1db7106, &amp;H98d220bc, &amp;Hefd5102a, &amp;H71b18589, &amp;H6b6b51f, &amp;H9fbfe4a5, &amp;He8b8d433, _<br/>&nbsp; &amp;H7807c9a2, &amp;Hf00f934, &amp;H9609a88e, &amp;He10e9818, &amp;H7f6a0dbb, &amp;H86d3d2d, &amp;H91646c97, &amp;He6635c01, _<br/>&nbsp; &amp;H6b6b51f4, &amp;H1c6c6162, &amp;H856530d8, &amp;Hf262004e, &amp;H6c0695ed, &amp;H1b01a57b, &amp;H8208f4c1, &amp;Hf50fc457, _<br/>&nbsp; &amp;H65b0d9c6, &amp;H12b7e950, &amp;H8bbeb8ea, &amp;Hfcb9887c, &amp;H62dd1ddf, &amp;H15da2d49, &amp;H8cd37cf3, &amp;Hfbd44c65, _<br/>&nbsp; &amp;H4db26158, &amp;H3ab551ce, &amp;Ha3bc0074, &amp;Hd4bb30e2, &amp;H4adfa541, &amp;H3dd895d7, &amp;Ha4d1c46d, &amp;Hd3d6f4fb, _<br/>&nbsp; &amp;H4369e96a, &amp;H346ed9fc, &amp;Had678846, &amp;Hda60b8d0, &amp;H44042d73, &amp;H33031de5, &amp;Haa0a4c5f, &amp;Hdd0d7cc9, _<br/>&nbsp; &amp;H5005713c, &amp;H270241aa, &amp;Hbe0b1010, &amp;Hc90c2086, &amp;H5768b525, &amp;H206f85b3, &amp;Hb966d409, &amp;Hce61e49f, _<br/>&nbsp; &amp;H5edef90e, &amp;H29d9c998, &amp;Hb0d09822, &amp;Hc7d7a8b4, &amp;H59b33d17, &amp;H2eb40d81, &amp;Hb7bd5c3b, &amp;Hc0ba6cad, _<br/>&nbsp; &amp;Hedb88320, &amp;H9abfb3b6, &amp;H3b6e20c, &amp;H74b1d29a, &amp;Head54739, &amp;H9dd277af, &amp;H4db2615, &amp;H73dc1683, _<br/>&nbsp; &amp;He3630b12, &amp;H94643b84, &amp;Hd6d6a3e, &amp;H7a6a5aa8, &amp;He40ecf0b, &amp;H9309ff9d, &amp;Ha00ae27, &amp;H7d079eb1, _<br/>&nbsp; &amp;Hf00f9344, &amp;H8708a3d2, &amp;H1e01f268, &amp;H6906c2fe, &amp;Hf762575d, &amp;H806567cb, &amp;H196c3671, &amp;H6e6b06e7, _<br/>&nbsp; &amp;Hfed41b76, &amp;H89d32be0, &amp;H10da7a5a, &amp;H67dd4acc, &amp;Hf9b9df6f, &amp;H8ebeeff9, &amp;H17b7be43, &amp;H60b08ed5, _<br/>&nbsp; &amp;Hd6d6a3e8, &amp;Ha1d1937e, &amp;H38d8c2c4, &amp;H4fdff252, &amp;Hd1bb67f1, &amp;Ha6bc5767, &amp;H3fb506dd, &amp;H48b2364b, _<br/>&nbsp; &amp;Hd80d2bda, &amp;Haf0a1b4c, &amp;H36034af6, &amp;H41047a60, &amp;Hdf60efc3, &amp;Ha867df55, &amp;H316e8eef, &amp;H4669be79, _<br/>&nbsp; &amp;Hcb61b38c, &amp;Hbc66831a, &amp;H256fd2a0, &amp;H5268e236, &amp;Hcc0c7795, &amp;Hbb0b4703, &amp;H220216b9, &amp;H5505262f, _<br/>&nbsp; &amp;Hc5ba3bbe, &amp;Hb2bd0b28, &amp;H2bb45a92, &amp;H5cb36a04, &amp;Hc2d7ffa7, &amp;Hb5d0cf31, &amp;H2cd99e8b, &amp;H5bdeae1d, _<br/>&nbsp; &amp;H9b64c2b0, &amp;Hec63f226, &amp;H756aa39c, &amp;H26d930a, &amp;H9c0906a9, &amp;Heb0e363f, &amp;H72076785, &amp;H5005713, _<br/>&nbsp; &amp;H95bf4a82, &amp;He2b87a14, &amp;H7bb12bae, &amp;Hcb61b38, &amp;H92d28e9b, &amp;He5d5be0d, &amp;H7cdcefb7, &amp;Hbdbdf21, _<br/>&nbsp; &amp;H86d3d2d4, &amp;Hf1d4e242, &amp;H68ddb3f8, &amp;H1fda836e, &amp;H81be16cd, &amp;Hf6b9265b, &amp;H6fb077e1, &amp;H18b74777, _<br/>&nbsp; &amp;H88085ae6, &amp;Hff0f6a70, &amp;H66063bca, &amp;H11010b5c, &amp;H8f659eff, &amp;Hf862ae69, &amp;H616bffd3, &amp;H166ccf45, _<br/>&nbsp; &amp;Ha00ae278, &amp;Hd70dd2ee, &amp;H4e048354, &amp;H3903b3c2, &amp;Ha7672661, &amp;Hd06016f7, &amp;H4969474d, &amp;H3e6e77db, _<br/>&nbsp; &amp;Haed16a4a, &amp;Hd9d65adc, &amp;H40df0b66, &amp;H37d83bf0, &amp;Ha9bcae53, &amp;Hdebb9ec5, &amp;H47b2cf7f, &amp;H30b5ffe9, _<br/>&nbsp; &amp;Hbdbdf21c, &amp;Hcabac28a, &amp;H53b39330, &amp;H24b4a3a6, &amp;Hbad03605, &amp;Hcdd70693, &amp;H54de5729, &amp;H23d967bf, _<br/>&nbsp; &amp;Hb3667a2e, &amp;Hc4614ab8, &amp;H5d681b02, &amp;H2a6f2b94, &amp;Hb40bbe37, &amp;Hc30c8ea1, &amp;H5a05df1b, &amp;H2d02ef8d}<br/>Extern "windows-ms"<br/>Function&nbsp; getcrc(ByVal c As Byte ptr, ByVal Length As Integer) As UInteger export<br/>&nbsp;Dim As UInteger crc 'FB里好像也可以可以用寄存器变量的(因为GCC好像是可以的),我暂时还没找到相关的关键字,所以就不用了<br/>&nbsp;Dim As Byte Ptr e= c + Length<br/>&nbsp;<br/>&nbsp;crc = &amp;HFFFFFFFF<br/>&nbsp;while (c &lt; e)<br/>&nbsp; crc = ((crc Shr 8) And &amp;H00FFFFFF) Xor crcTable((crc xor *c) And &amp;HFF)<br/>&nbsp; c+=1<br/>&nbsp;Wend<br/>&nbsp;Return ( crc Xor &amp;HFFFFFFFF )<br/>End Function<br/>End Extern<br/>'使用Extern.....End Extern的目的是使编译后的EXE可以作为DLL一样使用 <br/>'以下为命令行用法,即:&nbsp;&nbsp; EXE文件名 待求CRC值的字符串<br/>If Command&lt;&gt;"" Then<br/>&nbsp;MessageBox(NULL,getcrc(@Command,Len(Command)),"CRC32值(HEX)",MB_OK)<br/>EndIf <br/></font> hWNrfde3.rar (9.38 KB, 下载次数: 17444) <br/></p>

275

主题

3017

回帖

1

精华

管理员

嗷嗷叫的老马

积分
17064

论坛牛人贡献奖关注奖最佳版主进步奖人气王疯狂作品奖精英奖赞助论坛勋章乐于助人勋章

QQ
发表于 2009-5-21 02:24:00 | 显示全部楼层
<p>我觉得使用这些支持DLL与更多底层操作能力的语言来支持VB是最好不过啦,嘿嘿.</p>
<p>&nbsp;</p>
<p>而且语法上也与VB差不多.....</p>
我就是嗷嗷叫的老马了......

76

主题

375

回帖

0

精华

铜牌会员

积分
231
 楼主| 发表于 2009-5-21 08:26:41 | 显示全部楼层
<font face="Verdana">&nbsp; 确实是这样。。。。。VB的开发速度加其它语言强大的底层支持,不错的注意!<br/>不过有时候考虑到VB运行时库的问题,我还是单独使用FB来开发,因为它不需要运行时库的支持<br/>不过现在VB运行时库都自带了,除非在某些超级变态精简的机器上可能会出问题<br/>还有就是Vb写的程序如果使用了第三方OCX或COM组件的DLL的话要注册,但FB里可以动态注册的,就是使用时再注册,使用完就卸载。。。。。。。。。。。呵呵</font>

275

主题

3017

回帖

1

精华

管理员

嗷嗷叫的老马

积分
17064

论坛牛人贡献奖关注奖最佳版主进步奖人气王疯狂作品奖精英奖赞助论坛勋章乐于助人勋章

QQ
发表于 2009-5-22 16:33:22 | 显示全部楼层
<p>真正做项目时运行库,第三方控件啥的基本上是不需要考虑的</p>
<p>&nbsp;</p>
<p>只是有些功能只用VB6真的比较恼火.</p>
<p>&nbsp;</p>
<p>互补即可.</p>
我就是嗷嗷叫的老马了......

您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表