台灣最大程式設計社群網站
線上人數
1619
 
會員總數:245894
討論主題:189492
歡迎您免費加入會員
討論區列表 >> VB6 >> 16進位crc
[]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
16進位crc
價值 : 10 QP  點閱數:2111 回應數:0
樓主

爆牙
門外漢
0 7
129 11
發送站內信

我寫的crc轉換 但有錯誤 不知道哪邊出了問題
希望有大大可以幫我檢查看看!!

Dim lsb As Integer
Dim x As Variant
Dim crc As Variant

Private Sub Command1_Click()
Dim i, j As Integer
Dim y
x = Val("&H" + Text1.Text)
crc = crc Xor x '和 crc的值做互斥或閘(XOR)運算, 算完的結果存到crc
crc = (crc - 1) / 2
For j = 0 To 7 '8-bit
lsb = crc And 1 '取出crc的最後一個 bit,存到LSB
If lsb = 1 Then 'if LSB = 1
'crc = (crc - 1) / 2
crc = crc Xor 40961
Else
crc = crc / 2 '把crc的值往右位移一位
End If
Next j
y = crc Mod 256
crc = crc \ 256
crc = y * 256 + crc
LABEL1.Caption = Hex$(crc)
End Sub

Private Sub Form_Load()
crc = 65535
End Sub


下面為CRC的計算過程:
  1.設置CRC暫存器,並給其初始值FFFF(hex)。
  2.將數據的第一個BYTE與16位CRC暫存器的低8位進行XOR,把结果存入CRC暫存器。
  3.CRC暫存器向右移一位,MSB補零,移出並檢查LSB。
  4.如果LSB為0,重複第三步;若LSB為1,CRC暫存器與常數A001(HEX)做XOR,結果放入CRC暫存器。
  5.重複第3與第4步直到8個位元全部完成。此時一個8-bit數據處理完畢。
  6.重複第2至第5步直到所有數據全部處理完成。
  7.最终CRC暫存器的内容即為CRC值。

本篇文章發表於2007-05-22 17:44
目前尚無任何回覆
   

回覆
如要回應,請先登入.