CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  基础类

又来问问题了。汗~~

楼主kevincsg(土匪)2006-03-01 17:54:03 在 VB / 基础类 提问

code   const   word   CRC_TAB[16]   =    
  {    
          0x0000,     0x1021,     0x2042, 0x3063,   0x4084,     0x50a5,     0x60c6,     0x70e7,  
          0x8108,     0x9129,     0xa14a, 0xb16b,   0xc18c,     0xd1ad,     0xe1ce,     0xf1ef,  
          };  
   
  unsigned   int   get_crc(unsigned   char   *str)  
  {  
  unsigned   char   i   =   0;  
  unsigned   int   crc   =   0;  
  while(i<14)  
  {  
  crc   =   (crc   <<8)   ^   CRC_TAB[(crc   >>8)   ^   (*(str++))];  
  i++;  
  }  
  }  
  以上这段C代码,转成VB是怎么写的?  
  惭愧。。。  
  问题点数:50、回复次数:7Top

1 楼unsigned(僵哥(发站内消息,请附上链接或问题说明,否则不予回复))回复于 2006-03-01 18:21:00 得分 0

基本轉換:  
  不過需注意的是這里的c語言的無符號類型  
  ---------------------------  
   
  Dim   CRC_TAB(15)   As   Integer  
   
  Private   Function   get_crc(ByRef   sstr()   As   Byte)   As   Long  
   
        CRC_TAB(0)   =   &H0&  
        CRC_TAB(1)   =   &H1021&  
        CRC_TAB(2)   =   &H2042&  
        CRC_TAB(3)   =   &H3063&  
        CRC_TAB(4)   =   &H4084&  
        CRC_TAB(5)   =   &H50A5&  
        CRC_TAB(6)   =   &H60C6&  
        CRC_TAB(7)   =   &H70E7&  
        CRC_TAB(8)   =   &H8108&  
        CRC_TAB(9)   =   &H9129&  
        CRC_TAB(10)   =   &HA14A&  
        CRC_TAB(11)   =   &HB16B&  
        CRC_TAB(12)   =   &HC18C&  
        CRC_TAB(13)   =   &HD1AD&  
        CRC_TAB(14)   =   &HE1CE&  
        CRC_TAB(15)   =   &HF1EF&  
                   
        Dim   i   As   Byte  
        Dim   crc   As   Long  
        Dim   pStr   As   Integer  
        pStr   =   0  
   
        While   (i   <   14)  
              crc   =   (crc   *   (2   ^   8))   Xor   CRC_TAB((crc   \   (2   ^   8))   Xor   (sstr(pStr)))  
              pStr   =   pStr   +   1  
              i   =   i   +   1  
        Wend  
        get_crc   =   crc  
         
  End   FunctionTop

2 楼province_(雍昊)回复于 2006-03-01 18:28:35 得分 0

CRC_TAB定义成INTEGER  
  unsigned   int   get_crc(unsigned   char   *str)的参数要用BYTE型数组  
  char   i   定义为BYTE  
  unsigned   int   crc   =   0定义为INTEGER  
   
  crc   =   (crc   <<8)   ^   CRC_TAB[(crc   >>8)   ^   (*(str++))];变成  
   
  crc=(crc*256)   XOR   CRC_TAB((crc\256)   xor   str(i))Top

3 楼kevincsg(土匪)回复于 2006-03-02 15:25:22 得分 0

'定义校验数组  
  Public   CRC_TAB(256)   As   Integer  
   
  Public   Sub   InitCRC()  
      CRC_TAB(0)   =   &H0&  
      CRC_TAB(1)   =   &H1021&  
      CRC_TAB(2)   =   &H2042&  
      CRC_TAB(3)   =   &H3063&  
      CRC_TAB(4)   =   &H4084&  
      CRC_TAB(5)   =   &H50A5&  
      CRC_TAB(6)   =   &H60C6&  
      CRC_TAB(7)   =   &H70E7&  
       
      CRC_TAB(8)   =   &H8108&  
      CRC_TAB(9)   =   &H9129&  
      CRC_TAB(10)   =   &HA14A&  
      CRC_TAB(11)   =   &HB16B&  
      CRC_TAB(12)   =   &HC18C&  
      CRC_TAB(13)   =   &HD1AD&  
      CRC_TAB(14)   =   &HE1CE&  
      CRC_TAB(15)   =   &HF1EF&  
       
      CRC_TAB(16)   =   &H1231&  
      CRC_TAB(17)   =   &H210&  
      CRC_TAB(18)   =   &H3273&  
      CRC_TAB(19)   =   &H2252&  
      CRC_TAB(20)   =   &H52B5&  
      CRC_TAB(21)   =   &H4294&  
      CRC_TAB(22)   =   &H72F7&  
      CRC_TAB(23)   =   &H62D6&  
       
      CRC_TAB(24)   =   &H9339&  
      CRC_TAB(25)   =   &H8318&  
      CRC_TAB(26)   =   &HB37B&  
      CRC_TAB(27)   =   &HA35A&  
      CRC_TAB(28)   =   &HD3BD&  
      CRC_TAB(29)   =   &HC39C&  
      CRC_TAB(30)   =   &HF3FF&  
      CRC_TAB(31)   =   &HE3DE&  
       
      CRC_TAB(32)   =   &H2462&  
      CRC_TAB(33)   =   &H3443&  
      CRC_TAB(34)   =   &H420&  
      CRC_TAB(35)   =   &H1401&  
      CRC_TAB(36)   =   &H64E6&  
      CRC_TAB(37)   =   &H74C7&  
      CRC_TAB(38)   =   &H44A4&  
      CRC_TAB(39)   =   &H5485&  
       
      CRC_TAB(40)   =   &HA56A&  
      CRC_TAB(41)   =   &HB54B&  
      CRC_TAB(42)   =   &H8528&  
      CRC_TAB(43)   =   &H9509&  
      CRC_TAB(44)   =   &HE5EE&  
      CRC_TAB(45)   =   &HF5CF&  
      CRC_TAB(46)   =   &HC5AC&  
      CRC_TAB(47)   =   &HD58D&  
       
      CRC_TAB(48)   =   &H3653&  
      CRC_TAB(49)   =   &H2672&  
      CRC_TAB(50)   =   &H1611&  
      CRC_TAB(51)   =   &H630&  
      CRC_TAB(52)   =   &H76D7&  
      CRC_TAB(53)   =   &H66F6&  
      CRC_TAB(54)   =   &H5695&  
      CRC_TAB(55)   =   &H46B4&  
       
      CRC_TAB(56)   =   &HB75B&  
      CRC_TAB(57)   =   &HA77A&  
      CRC_TAB(58)   =   &H9719&  
      CRC_TAB(59)   =   &H8738&  
      CRC_TAB(60)   =   &HF7DF&  
      CRC_TAB(61)   =   &HE7FE&  
      CRC_TAB(62)   =   &HD79D&  
      CRC_TAB(63)   =   &HC7BC&  
       
      CRC_TAB(64)   =   &H48C4&  
      CRC_TAB(65)   =   &H58E5&  
      CRC_TAB(66)   =   &H6886&  
      CRC_TAB(67)   =   &H78A7&  
      CRC_TAB(68)   =   &H840&  
      CRC_TAB(69)   =   &H1861&  
      CRC_TAB(70)   =   &H2802&  
      CRC_TAB(71)   =   &H3823&  
       
      CRC_TAB(72)   =   &HC9CC&  
      CRC_TAB(73)   =   &HD9ED&  
      CRC_TAB(74)   =   &HE98E&  
      CRC_TAB(75)   =   &HF9AF&  
      CRC_TAB(76)   =   &H8948&  
      CRC_TAB(77)   =   &H9969&  
      CRC_TAB(78)   =   &HA90A&  
      CRC_TAB(79)   =   &HB92B&  
           
      CRC_TAB(80)   =   &H5AF5&  
      CRC_TAB(81)   =   &H4AD4&  
      CRC_TAB(82)   =   &H7AB7&  
      CRC_TAB(83)   =   &H6A96&  
      CRC_TAB(84)   =   &H1A71&  
      CRC_TAB(85)   =   &HA50&  
      CRC_TAB(86)   =   &H3A33&  
      CRC_TAB(87)   =   &H2A12&  
       
      CRC_TAB(88)   =   &HDBFD&  
      CRC_TAB(89)   =   &HCBDC&  
      CRC_TAB(90)   =   &HFBBF&  
      CRC_TAB(91)   =   &HEB9E&  
      CRC_TAB(92)   =   &H9B79&  
      CRC_TAB(93)   =   &H8B58&  
      CRC_TAB(94)   =   &HBB3B&  
      CRC_TAB(95)   =   &HAB1A&  
       
      CRC_TAB(96)   =   &H6CA6&  
      CRC_TAB(97)   =   &H7C87&  
      CRC_TAB(98)   =   &H4CE4&  
      CRC_TAB(99)   =   &H5CC5&  
      CRC_TAB(100)   =   &H2C22&  
      CRC_TAB(101)   =   &H3C03&  
      CRC_TAB(102)   =   &HC60&  
      CRC_TAB(103)   =   &H1C41&  
       
      CRC_TAB(104)   =   &HEDAE&  
      CRC_TAB(105)   =   &HFD8F&  
      CRC_TAB(106)   =   &HCDEC&  
      CRC_TAB(107)   =   &HDDCD&  
      CRC_TAB(108)   =   &HAD2A&  
      CRC_TAB(109)   =   &HBD0B&  
      CRC_TAB(110)   =   &H8D68&  
      CRC_TAB(111)   =   &H9D49&  
       
      CRC_TAB(112)   =   &H7E97&  
      CRC_TAB(113)   =   &H6EB6&  
      CRC_TAB(114)   =   &H5ED5&  
      CRC_TAB(115)   =   &H4EF4&  
      CRC_TAB(116)   =   &H3E13&  
      CRC_TAB(117)   =   &H2E32&  
      CRC_TAB(118)   =   &H1E51&  
      CRC_TAB(119)   =   &HE70&  
       
      CRC_TAB(120)   =   &HFF9F&  
      CRC_TAB(121)   =   &HEFBE&  
      CRC_TAB(122)   =   &HDFDD&  
      CRC_TAB(123)   =   &HCFFC&  
      CRC_TAB(124)   =   &HBF1B&  
      CRC_TAB(125)   =   &HAF3A&  
      CRC_TAB(126)   =   &H9F59&  
      CRC_TAB(127)   =   &H8F78&  
       
      CRC_TAB(128)   =   &H9188&  
      CRC_TAB(129)   =   &H81A9&  
      CRC_TAB(130)   =   &HB1CA&  
      CRC_TAB(131)   =   &HA1EB&  
      CRC_TAB(132)   =   &HD10C&  
      CRC_TAB(133)   =   &HC12D&  
      CRC_TAB(134)   =   &HF14E&  
      CRC_TAB(135)   =   &HE16F&  
       
      CRC_TAB(136)   =   &H1080&  
      CRC_TAB(137)   =   &HA1&  
      CRC_TAB(138)   =   &H30C2&  
      CRC_TAB(139)   =   &H20E3&  
      CRC_TAB(140)   =   &H5004&  
      CRC_TAB(141)   =   &H4025&  
      CRC_TAB(142)   =   &H7046&  
      CRC_TAB(143)   =   &H6067&  
       
      CRC_TAB(144)   =   &H83B9&  
      CRC_TAB(145)   =   &H9398&  
      CRC_TAB(146)   =   &HA3FB&  
      CRC_TAB(147)   =   &HB3DA&  
      CRC_TAB(148)   =   &HC33D&  
      CRC_TAB(149)   =   &HD31C&  
      CRC_TAB(150)   =   &HE37F&  
      CRC_TAB(151)   =   &HF35E&  
       
      CRC_TAB(152)   =   &H2B1&  
      CRC_TAB(153)   =   &H1290&  
      CRC_TAB(154)   =   &H22F3&  
      CRC_TAB(155)   =   &H32D2&  
      CRC_TAB(156)   =   &H4235&  
      CRC_TAB(157)   =   &H5214&  
      CRC_TAB(158)   =   &H6277&  
      CRC_TAB(159)   =   &H7256&  
       
      CRC_TAB(160)   =   &HB5EA&  
      CRC_TAB(161)   =   &HA5CB&  
      CRC_TAB(162)   =   &H95A8&  
      CRC_TAB(163)   =   &H8589&  
      CRC_TAB(164)   =   &HF56E&  
      CRC_TAB(165)   =   &HE54F&  
      CRC_TAB(166)   =   &HD52C&  
      CRC_TAB(167)   =   &HC50D&  
       
      CRC_TAB(168)   =   &H34E2&  
      CRC_TAB(169)   =   &H24C3&  
      CRC_TAB(170)   =   &H14A0&  
      CRC_TAB(171)   =   &H481&  
      CRC_TAB(172)   =   &H7466&  
      CRC_TAB(173)   =   &H6447&  
      CRC_TAB(174)   =   &H5424&  
      CRC_TAB(175)   =   &H4405&  
       
      CRC_TAB(176)   =   &HA7DB&  
      CRC_TAB(177)   =   &HB7FA&  
      CRC_TAB(178)   =   &H8799&  
      CRC_TAB(179)   =   &H97B8&  
      CRC_TAB(180)   =   &HE75F&  
      CRC_TAB(181)   =   &HF77E&  
      CRC_TAB(182)   =   &HC71D&  
      CRC_TAB(183)   =   &HD73C&  
       
      CRC_TAB(184)   =   &H26D3&  
      CRC_TAB(185)   =   &H36F2&  
      CRC_TAB(186)   =   &H691&  
      CRC_TAB(187)   =   &H16B0&  
      CRC_TAB(188)   =   &H6657&  
      CRC_TAB(189)   =   &H7676&  
      CRC_TAB(190)   =   &H4615&  
      CRC_TAB(191)   =   &H5634&  
       
      CRC_TAB(192)   =   &HD94C&  
      CRC_TAB(193)   =   &HC96D&  
      CRC_TAB(194)   =   &HF90E&  
      CRC_TAB(195)   =   &HE92F&  
      CRC_TAB(196)   =   &H99C8&  
      CRC_TAB(197)   =   &H89E9&  
      CRC_TAB(198)   =   &HB98A&  
      CRC_TAB(199)   =   &HA9AB&  
       
      CRC_TAB(200)   =   &H5844&  
      CRC_TAB(201)   =   &H4865&  
      CRC_TAB(202)   =   &H7806&  
      CRC_TAB(203)   =   &H6827&  
      CRC_TAB(204)   =   &H18C0&  
      CRC_TAB(205)   =   &H8E1&  
      CRC_TAB(206)   =   &H3882&  
      CRC_TAB(207)   =   &H28A3&  
       
      CRC_TAB(208)   =   &HCB7D&  
      CRC_TAB(209)   =   &HDB5C&  
      CRC_TAB(210)   =   &HEB3F&  
      CRC_TAB(211)   =   &HFB1E&  
      CRC_TAB(212)   =   &H8BF9&  
      CRC_TAB(213)   =   &H9BD8&  
      CRC_TAB(214)   =   &HABBB&  
      CRC_TAB(215)   =   &HBB9A&  
       
      CRC_TAB(216)   =   &H4A75&  
      CRC_TAB(217)   =   &H5A54&  
      CRC_TAB(218)   =   &H6A37&  
      CRC_TAB(219)   =   &H7A16&  
      CRC_TAB(220)   =   &HAF1&  
      CRC_TAB(221)   =   &H1AD0&  
      CRC_TAB(222)   =   &H2AB3&  
      CRC_TAB(223)   =   &H3A92&  
       
      CRC_TAB(224)   =   &HFD2E&  
      CRC_TAB(225)   =   &HED0F&  
      CRC_TAB(226)   =   &HDD6C&  
      CRC_TAB(227)   =   &HCD4D&  
      CRC_TAB(228)   =   &HBDAA&  
      CRC_TAB(229)   =   &HAD8B&  
      CRC_TAB(230)   =   &H9DE8&  
      CRC_TAB(231)   =   &H8DC9&  
       
      CRC_TAB(232)   =   &H7C26&  
      CRC_TAB(233)   =   &H6C07&  
      CRC_TAB(234)   =   &H5C64&  
      CRC_TAB(235)   =   &H4C45&  
      CRC_TAB(236)   =   &H3CA2&  
      CRC_TAB(237)   =   &H2C83&  
      CRC_TAB(238)   =   &H1CE0&  
      CRC_TAB(239)   =   &HCC1&  
       
      CRC_TAB(240)   =   &HEF1F&  
      CRC_TAB(241)   =   &HFF3E&  
      CRC_TAB(242)   =   &HCF5D&  
      CRC_TAB(243)   =   &HDF7C&  
      CRC_TAB(244)   =   &HAF9B&  
      CRC_TAB(245)   =   &HBFBA&  
      CRC_TAB(246)   =   &H8FD9&  
      CRC_TAB(247)   =   &H9FF8&  
       
      CRC_TAB(248)   =   &H6E17&  
      CRC_TAB(249)   =   &H7E36&  
      CRC_TAB(250)   =   &H4E55&  
      CRC_TAB(251)   =   &H5E74&  
      CRC_TAB(252)   =   &H2E93&  
      CRC_TAB(253)   =   &H3EB2&  
      CRC_TAB(254)   =   &HED1&  
      CRC_TAB(255)   =   &H1EF0&  
       
  End   Sub  
   
   
  Public   Function   get_crc(ByRef   Str()   As   Byte)   As   Integer  
        Dim   i   As   Byte  
        Dim   crc   As   Long  
        While   (i   <   14)  
              crc   =   (crc   *   256)   Xor   CRC_TAB((crc   \   256)   Xor   Str(i))  
              i   =   i   +   1  
        Wend  
        get_crc   =   crc  
         
  End   Function  
  ---------------------------------------------------------------------------  
  private   sub   Test()  
      Dim   b(14)   As   Byte  
      For   i   =   0   To   13  
          b(i)   =   Hex(Asc(i))  
      Next          
      MsgBox   get_crc(b)  
  end   sub    
  发生溢出错误。  
  不知道哪里写的是否有问题。请各位指教Top

4 楼kevincsg(土匪)回复于 2006-03-02 16:32:42 得分 0

无奈的up...:(  
  Top

5 楼kevincsg(土匪)回复于 2006-03-02 19:45:22 得分 0

继续up...Top

6 楼wxrwan(无奈小飞不耻上问)回复于 2006-03-03 09:35:15 得分 0

没试过,但感觉crc   *   256有问题Top

7 楼kevincsg(土匪)回复于 2006-03-03 10:02:49 得分 0

现在就是没搞清除问题出在哪  
  按道理这样转换语法是没问题的。而且所以的类型我也已经设成long了。结果还是溢出。。哭啊...  
  Top

相关问题

  • 菜鸟又来问问题了!!
  • 问,问题,问问题,问问问题 :)
  • 我又来问问题了!up,gz有分!高分请教!
  • 好久没问问题了,总算又有了。关于datawindow
  • 又是我,来问问题来了~~~~~~~~~呵呵 不要打我啊
  • 小女子我又回来问问题了!!!!!
  • 各位大GG.DD!小妹又来问问题了...................UP也可.........
  • 又来问问题了,编码的问题 ……谢谢
  • 不好意思!又来问问题来了!打捞了!谢谢
  • 小弟又来问问题了,csdn真好,各取所需阿~

关键词

  • ce
  • crc
  • tab
  • hb
  • hc
  • hf
  • hd
  • ef
  • unsigned
  • ad

得分解答快速导航

  • 帖主:kevincsg

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo