{
int i;
unsigned short reg_crc=0xffff;
while(length--)
{
reg_crc=(reg_crc>>8) & 0x00ff;
reg_crc^= * data++;
for(i=0;i<8;i++)
{
if(reg_crc & 0x01)
{ reg_crc=(reg_crc>>1)^0xa001; }
else
{ reg_crc=reg_crc>>1; }
}
}
return reg_crc;
}
uj5u.com熱心網友回復:
dim i as long
dim reg_crc as integer
reg_crc = &Hffff
while length <> 0
length = length - 1
reg_crc=(reg_crc \ 256) and &Hff
reg_crc=reg_crc xor 陣列(data)
data = data + 1
for i=0 to 8
if reg_crc and 1 <> 0 then
reg_crc=(reg_crc \ 2) xor &Ha001
else
reg_crc=reg_crc \ 2
next
wend
函式名 = reg_crc
uj5u.com熱心網友回復:
謝謝幫我翻寫,可是最終結果是 -1,麻煩您在幫我看一下Function CRC16(data() As Byte) As String
Dim i As Long
Dim M As Integer
Dim reg_crc As Integer
reg_crc = &HFFFF
While length <> 0
length = length - 1
reg_crc = (reg_crc \ 256) And &HFF
reg_crc = reg_crc Xor data(M)
M = M + 1
' MsgBox M
For i = 0 To 8
If reg_crc And 1 <> 0 Then
reg_crc = (reg_crc \ 2) Xor &HA001
Else
reg_crc = reg_crc \ 2
End If
Next i
Wend
CRC16 = reg_crc
End Function
‘===================================================================
Private Sub Command5_Click()
Dim CRC() As Byte
Text7.Text = Len(Text1)
CRC = CRC16(Text1.Text)
Text9 = CRC
End Sub
‘===================================================================
uj5u.com熱心網友回復:
1L大神,我剛剛把修改了下,然后[align=left]計[align=left]算出來的結果和我的C源代碼結果不一致比如計算:SAD=28901;##FLAG=12345
C出來:AB41
而我根據你給我的更改的代碼出來的是:6AC0
麻煩再幫我查找下問題所在,謝謝
C##
{
int i;
unsigned short reg_crc=0xffff;
while(length--)
{
reg_crc=(reg_crc>>8) & 0x00ff;
reg_crc^= * data++;
for(i=0;i<8;i++)
{
if(reg_crc & 0x01)
{ reg_crc=(reg_crc>>1)^0xa001; }
else
{ reg_crc=reg_crc>>1; }
}
}
return reg_crc; \\reg_crc;結果為AB41
}[/align]
\\***********************************************************************************************
VB
Function CRC16(data() As Byte) As String
Dim i As Long
Dim M As Integer
Dim reg_crc As Long
reg_crc = &HFFFF&
MsgBox length
length = Len(Text1)
While length <> 0
length = length - 1
reg_crc = (reg_crc \ 256) And &HFF
reg_crc = reg_crc Xor data(M)
M = M + 1
For i = 0 To 7
If reg_crc And 1 <> 0 Then
reg_crc = (reg_crc \ 2) Xor &HA001
Else
reg_crc = reg_crc \ 2
End If
Next i
Wend
CRC16 = reg_crc
End Function
’==================================================================
Private Sub Command5_Click()
Dim CRC() As Byte
Text7.Text = Len(Text1)
CRC = CRC16(Text1.Text)
Text9 = CRC ‘CRC結果為6AC0
End Sub
uj5u.com熱心網友回復:
標準的CRC16演算法,網上隨便找一個也就是了,沒必要一定要翻譯過來uj5u.com熱心網友回復:
標準CRC16演算法有6種,也就是說結果會有6組,而我需要被翻譯的是其中的一種,用其他的,CRC結果不匹配uj5u.com熱心網友回復:
這樣硬生生的翻譯,最終得到的結果肯定會有差異,況且C里有指標,在VB里是沒有指標的概念的。轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/86783.html
標籤:VB基礎類
上一篇:solidworks二次開發
