中文字幕第五页-中文字幕第页-中文字幕韩国-中文字幕最新-国产尤物二区三区在线观看-国产尤物福利视频一区二区

包含vb.netcrc的詞條

vb,crc校驗的程序

'Text1.Text 輸入數據

成都創新互聯是一家以網絡技術公司,為中小企業提供網站維護、成都網站制作、成都網站設計、網站備案、服務器租用、國際域名空間、軟件開發、成都小程序開發等企業互聯網相關業務,是一家有著豐富的互聯網運營推廣經驗的科技公司,有著多年的網站建站經驗,致力于幫助中小企業在互聯網讓打出自已的品牌和口碑,讓企業在互聯網上打開一個面向全國乃至全球的業務窗口:建站咨詢電話:18980820575

'Text2.Text 輸出數據

Dim ReturnData(1) As Byte

Private Sub Command1_Click()

Dim CRC(2) As Byte

Dim d(6) As Byte '待傳輸數據

ReDim data(7) As Byte

For i = 0 To 5

data(i) = "h" + Mid(Text1.Text, 2 * i + 1, 2)

Debug.Print data(i)

Next i

Call CRC16(data, UBound(data) - 2, data(6), data(7)) '調用CRC16計算函數

' CRC(0)為高位

' CRC(1)為低位

End Sub

Function CRC16(data() As Byte, i As Integer, ByRef ReturnDatalo As Byte, ByRef ReturnDatahi As Byte) As String

Dim CRC16Lo As Byte, CRC16Hi As Byte 'CRC寄存器

Dim CL As Byte, CH As Byte '多項式碼HA001

Dim SaveHi As Byte, SaveLo As Byte

Dim Flag As Integer

CRC16Lo = HFF

CRC16Hi = HFF

CL = H1

CH = HA0

For i = 0 To UBound(data) - 2

CRC16Lo = CRC16Lo Xor data(i) '每一個數據與CRC寄存器進行異或

For Flag = 0 To 9

SaveHi = CRC16Hi

SaveLo = CRC16Lo

CRC16Hi = CRC16Hi \ 2 '高位右移一位

CRC16Lo = CRC16Lo \ 2 '低位右移一位

If ((SaveHi And H1) = H1) Then '如果高位字節最后一位為1

CRC16Lo = CRC16Lo Or H80 '則低位字節右移后前面補1

End If '否則自動補0

If ((SaveLo And H1) = H1) Then '如果LSB為1,則與多項式碼進行異或

CRC16Hi = CRC16Hi Xor CH

CRC16Lo = CRC16Lo Xor CL

End If

Next Flag

Next i

ReturnDatahi = CRC16Hi 'CRC高位

ReturnDatalo = CRC16Lo 'CRC低位

Debug.Print Hex(CRC16Lo), Hex(CRC16Hi)

Text2.Text = Text1.Text Hex(CRC16Lo) Hex(CRC16Hi)

End Function

C語言轉換為VB.NET

Option Explicit On

Option Strict On

Imports System

Module Program

Sub Main()

Dim y,m,t As Integer

begin:

' 輸入數據時一行一個

y=CInt(Console.ReadLine())

m=CInt(Console.ReadLine())

t=CInt(Console.ReadLine())

If y

200 Then

Console.WriteLine("ERROR")

goto begin

End If

pr(y,m,t)

Console.Write("Press any key to continue . . . ")

Console.ReadKey(True)

End Sub

Function pr(y As Integer,m As Integer,t As Integer) As Integer

Dim ye,[Me],i As Integer

ye=CInt((m+t-2)/12+y)

[Me]=(m+t-2) Mod 12+1

End If

End Function

Function mday(y As Integer,m As Integer) As Integer

Dim day As Integer()={0,31,28,31,30,31,30,31,31,30,31,30,31}

Dim ad As I

怎么用VB做8位CRC程序

VB 對位的操作是有點難度的!

VB 的CRC 校驗程序 請看下的URL!

VB下如何編寫CRC校驗程序

摘自于網絡

VB下如何編寫CRC校驗程序

隨著計算機技術的不斷發展,在現代工業中,利用微機進行數據通訊的工業控制應用得也越來越廣泛。由于傳輸距離、現場狀況等諸多可能出現的因素影響,計算機與受控設備之間的通訊數據常會發生無法預測的錯誤。為了防止錯誤所帶來的影響,一般在通訊時采取數據校驗的辦法,而循環冗余碼校驗是最常用的校驗方法之一。

一、循環冗余碼校驗原理

循環冗余碼校驗英文名稱為Cyclical Redundancy Check,簡稱CRC。它是利用除法及余數的原理來作錯誤偵測(Error Detecting)的。實際應用時,發送裝置計算出CRC值并隨數據一同發送給接收裝置,接收裝置對收到的數據重新計算CRC并與收到的CRC相比較,若兩個CRC值不同,則說明數據通訊出現錯誤。

根據應用環境與習慣的不同,CRC又可分為以下幾種標準:

①CRC-12碼;

②CRC-16碼;

③CRC-CCITT碼;

④CRC-32碼。

CRC-12碼通常用來傳送6-bit字符串。CRC-16及CRC-CCITT碼則用是來傳送8-bit字符,其中CRC-16為美國采用,而CRC-CCITT為歐洲國家所采用。CRC-32碼大都被采用在一種稱為Point-to-Point的同步傳輸中。

下面以最常用的CRC-16為例來說明其生成過程。

CRC-16碼由兩個字節構成,在開始時CRC寄存器的每一位都預置為1,然后把CRC寄存器與8-bit的數據進行異或,之后對CRC寄存器從高到低進行移位,在最高位(MSB)的位置補零,而最低位(LSB,移位后已經被移出CRC寄存器)如果為1,則把寄存器與預定義的多項式碼進行異或,否則如果 LSB為零,則無需進行異或。重復上述的由高至低的移位8次,第一個8-bit數據處理完畢,用此時CRC寄存器的值與下一個8-bit數據異或并進行如前一個數據似的8次移位。所有的字符處理完成后CRC寄存器內的值即為最終的CRC值。

下面為CRC的計算過程:

1.設置CRC寄存器,并給其賦值FFFF(hex)。

2.將數據的第一個8-bit字符與16位CRC寄存器的低8位進行異或,并把結果存入CRC寄存器。

3.CRC寄存器向右移一位,MSB補零,移出并檢查LSB。

4.如果LSB為0,重復第三步;若LSB為1,CRC寄存器與多項式碼相異或。

5.重復第3與第4步直到8次移位全部完成。此時一個8-bit數據處理完畢。

6.重復第2至第5步直到所有數據全部處理完成。

7.最終CRC寄存器的內容即為CRC值。

二、 循環冗余碼校驗程序的編寫

明白了CRC校驗碼的產生過程,編寫起程序來就非常容易了。由于Visual Basic的廣泛普及以及其在數據通訊中的重要地位,下面就以VB語言來編寫CRC的生成程序,其它語言只需稍做修改即可。

編寫CRC校驗程序有兩種辦法:一種為計算法,一種為查表法。下面對兩種方法分別討論。

1.計算法

計算法就是依據CRC校驗碼的產生原理來設計程序。其優點是模塊代碼少,修改靈活,可移植性好。其缺點為計算量大。為了便于理解,這里假定了三位數據,而多項式碼為A001(hex)。

在窗體上放置一命令按鈕Command1,并添加如下代碼:

Private Sub Command1_Click()

Dim CRC() As Byte

Dim d() As Byte ’待傳輸數據

ReDim d(2) As Byte

d(0) = 123

d(1) = 112

d(2) = 135

CRC = CRC16(d) ’調用CRC16計算函數

’CRC(0)為高位

’CRC(1)為低位

End Sub

注意:在數據傳輸時CRC的低位可能在前,而高位在后。

Function CRC16(data() As Byte) As String

Dim CRC16Lo As Byte, CRC16Hi As Byte ’CRC寄存器

Dim CL As Byte, CH As Byte ’多項式碼HA001

Dim SaveHi As Byte, SaveLo As Byte

Dim I As Integer

Dim Flag As Integer

CRC16Lo = HFF

CRC16Hi = HFF

CL = H1

CH = HA0

For I = 0 To Ubound(data)

CRC16Lo = CRC16Lo Xor data(I) ’每一個數據與CRC寄存器進行異或

For Flag = 0 To 7

SaveHi = CRC16Hi

SaveLo = CRC16Lo

CRC16Hi = CRC16Hi \ 2 ’高位右移一位

CRC16Lo = CRC16Lo \ 2 ’低位右移一位

If ((SaveHi And H1) = H1) Then ’如果高位字節最后一位為1

CRC16Lo = CRC16Lo Or H80 ’則低位字節右移后前面補1

End If ’否則自動補0

If ((SaveLo And H1) = H1) Then ’如果LSB為1,則與多項式碼進行異或

CRC16Hi = CRC16Hi Xor CH

CRC16Lo = CRC16Lo Xor CL

End If

Next Flag

Next I

Dim ReturnData(1) As Byte

ReturnData(0) = CRC16Hi ’CRC高位

ReturnData(1) = CRC16Lo ’CRC低位

CRC16 = ReturnData

End Function

2.查表法

查表法的優缺點與計算法的正好相反。為了便于比較,這里所有的假定與計算法的完全相同,都而在窗體上放置一個Command1的按鈕,其代碼部分與上面的也完全一致。下面只介紹CRC函數的編寫源代碼。

Private Function CRC16(data() As Byte) As String

Dim CRC16Hi As Byte

Dim CRC16Lo As Byte

CRC16Hi = HFF

CRC16Lo = HFF

Dim I As Integer

Dim iIndex As Long

For I = 0 To Ubound(data)

iIndex = CRC16Lo Xor data(I)

CRC16Lo = CRC16Hi Xor GetCRCLo(iIndex) ’低位處理

CRC16Hi = GetCRCHi(iIndex) ’高位處理

Next I

Dim ReturnData(1) As Byte

ReturnData(0) = CRC16Hi ’CRC高位

ReturnData(1) = CRC16Lo ’CRC低位

CRC16 = ReturnData

End Function

’CRC低位字節值表

Function GetCRCLo(Ind As Long) As Byte

GetCRCLo = Choose(Ind + 1, H0, HC1, H81, H40, H1, HC0, H80, H41, H1, HC0, H80, H41, H0, HC1, H81, H40, H1, HC0, H80, H41, H0, HC1, H81, H40, H0, HC1, H81, H40, H1, HC0, H80, H41, H1, HC0, H80, H41, H0, HC1, H81, H40, H0, HC1, H81, H40, H1, HC0, H80, H41, H0, HC1, H81, H40, H1, HC0, H80, H41, H1, HC0, H80, H41, H0, HC1, H81, H40, H1, HC0, H80, H41, H0, HC1, H81, H40, H0, HC1, H81, H40, H1, HC0, H80, H41, H0, HC1, H81, H40, H1, HC0, H80, H41, H1, HC0, H80, H41, H0, HC1, H81, H40, H0, HC1, H81, H40, H1, HC0, H80, H41, H1, HC0, H80, H41, H0, HC1, H81, H40, H1, HC0, H80, H41, H0, HC1, H81, H40, H0, HC1, H81, H40, H1, HC0, H80, H41, H1, HC0, _

H80, H41, H0, HC1, H81, H40, H0, HC1, H81, H40, H1, HC0, H80, H41, H0, HC1, H81, H40, H1, HC0, H80, H41, H1, HC0, H80, H41, H0, HC1, H81, H40, H0, HC1, H81, H40, H1, HC0, H80, H41, H1, HC0, H80, H41, H0, HC1, H81, H40, H1, HC0, H80, H41, H0, HC1, H81, H40, H0, HC1, H81, H40, H1, HC0, H80, H41, H0, HC1, H81, H40, H1, HC0, H80, H41, H1, HC0, H80, H41, H0, HC1, H81, H40, H1, HC0, H80, H41, H0, HC1, H81, H40, H0, HC1, H81, H40, H1, HC0, H80, H41, H1, HC0, H80, H41, H0, HC1, H81, H40, H0, HC1, H81, H40, H1, HC0, H80, H41, H0, HC1, H81, H40, H1, HC0, H80, H41, H1, HC0, H80, H41, H0, HC1, H81, H40)

End Function

’CRC高位字節值表

Function GetCRCHi(Ind As Long) As Byte

GetCRCHi = Choose(Ind + 1, H0, HC0, HC1, H1, HC3, H3, H2, HC2, HC6, H6, H7, HC7, H5, HC5, HC4, H4, HCC, HC, HD, HCD, HF, HCF, HCE, HE, HA, HCA, HCB, HB, HC9, H9, H8, HC8, HD8, H18, H19, HD9, H1B, HDB, HAD, H1A, H1E, HDE, HDF, H1F, HDD, H1D, H1C, HDC, H14, HD4, HD5, H15, HD7, H17, H16, HD6, HD2, H12, H13, HD3, H11, HD1, HD0, H10, HF0, H30, H31, HF1, H33, HF3, HF2, H32, H36, HF6, HF7, H37, HF5, H35, H34, HF4, H3C, HFC, HFD, H3D, HFF, H3F, H3E, HFE, HFA, H3A, H3B, HFB, H39, HF9, HF8, H38, H28, HE8, HE9, H29, HEB, H2B, H2A, HEA, HEE, H2E, H2F, HEF, H2D, HED, HEC, H2C, HE4, H24, H25, HE5, H27, HE7, HE6, H26, H22, HE2, HE3, H23, HE1, H21, H20, HE0, HA0, H60, _

H61, HA1, H63, HA3, HA2, H62, H66, HA6, HA7, H67, HA5, H65, H64, HA4, H6C, HAC, HAD, H6D, HAF, H6F, H6E, HAE, HAA, H6A, H6B, HAB, H69, HA9, HA8, H68, H78, HB8, HB9, H79, HBB, H7B, H7A, HBA, HBE, H7E, H7F, HBF, H7D, HBD, HBC, H7C, HB4, H74, H75, HB5, H77, HB7, HB6, H76, H72, HB2, HB3, H73, HB1, H71, H70, HB0, H50, H90, H91, H51, H93, H53, H52, H92, H96, H56, H57, H97, H55, H95, H94, H54, H9C, H5C, H5D, H9D, H5F, H9F, H9E, H5E, H5A, H9A, H9B, H5B, H99, H59, H58, H98, H88, H48, H49, H89, H4B, H8B, H8A, H4A, H4E, H8E, H8F, H4F, H8D, H4D, H4C, H8C, H44, H84, H85, H45, H87, H47, H46, H86, H82, H42, H43, H83, H41, H81, H80, H40)

End Function

以上程序在Win98,VB6下調試通過。

VB CRC校驗問題

大概看了下。有變量定義類型錯誤,修改如下:

Public

Function

crc16(ByRef

cmdstring()

As

Byte,

DataLen

As

Integer)

As

String

Dim

data

As

Integer

Dim

i

As

Integer

Dim

CRCHi

As

long,

CRCLo

As

long'這里應該定義為long.因為下面賦值是long型。朋友。

Dim

iIndex

As

Long

Dim

CRCStr

As

String

Dim

DataStr

As

String

CRCLo

=

HFF'看這里的賦值。long型

CRCHi

=

HFF

For

i

=

To

DataLen

iIndex

=

CRCLo

Xor

cmdstring(i)

CRCLo

=

CRCHi

Xor

GetCRCLo(iIndex)

'低位處理

CRCHi

=

GetCRCHi(iIndex)

'高位處理

DataStr

=

DataStr

Chr(cmdstring(i))

Next

i

Dim

ReturnData(1)

As

Byte

ReturnData(1)

=

CRCHi

ReturnData(0)

=

CRCLo

CRCStr

=

StrConv(ReturnData,

vbUnicode)

crc16

=

DataStr

+

CRCStr

End

Function

vb如何實現CRC12校驗

異或在計算機二進制運算中是一種常用運算,最常見于數據的簡單加密。 它的運算規則是這樣的,兩組數據對位后進行比較——相同,即同為0或同為1,輸出0;不同,輸出1。 看下面的例子,你會掌握異或運算:(第一組數據) :0011 0011 0011 0011(第二組數據) :0000 1111 0011 1100(異或運算結果):0011 1100 0000 1111 ————————————————————————————————————我們先把校驗對象(31 30 34 32 H)劃成二進制:0011 0001 0011 0000 0011 0100 0011 0010 把校驗多項式(18 0D H)劃成二進制:0001 1000 0000 1101 據CRC12校驗規則,被除數為校驗對象后加12個“0”,除數為校驗多項式,運算時以高位對齊。以下使用計算法對校驗對象進行CRC12校驗。在每次計算前,高位去零,一直計算到被除數位數少于除數位數時停止。 計算過程:校驗對象: 0011 0001 0011 0000 0011 0100 0011 0010被除數 →  0011 0001 0011 0000 0011 0100 0011 0010 0000 0000 0000校驗多項式:0001 1000 0000 1101除數  →  1 1000 0000 1101 高位去零,對齊后進行異或運算: 110001001100000011010000110010000000000000

/1100000001101

=000001001010100011010000110010000000000000(高位去零,再次運算) 1001010100011010000110010000000000000

/1100000001101

=0101010101110010000110010000000000000(高位去零,再次運算) 101010101110010000110010000000000000

/1100000001101

=011010101000110000110010000000000000(高位去零,再次運算) 11010101000110000110010000000000000

/1100000001101

=00010101011100000110010000000000000(高位去零,再次運算) 10101011100000110010000000000000

/1100000001101

=01101011111010110010000000000000(高位去零,再次運算) 1101011111010110010000000000000

/1100000001101

=0001011110111110010000000000000(高位去零,再次運算) 1011110111110010000000000000

/1100000001101

=0111110110011010000000000000(高位去零,再次運算) 111110110011010000000000000

/1100000001101

=001110110101110000000000000(高位去零,再次運算) 1110110101110000000000000

/1100000001101

=0010110100011000000000000(高位去零,再次運算) 10110100011000000000000

/1100000001101

=01110100000010000000000(高位去零,再次運算) 1110100000010000000000

/1100000001101

=0010100001111000000000(高位去零,再次運算) 10100001111000000000

/1100000001101

=01100001100010000000(高位去零,再次運算) 1100001100010000000

/1100000001101

=0000001101111000000(高位去零,再次運算) 1101111000000

/1100000001101

=0001111001101(高位去零,符合終止條件)=1111001101 所以,CRC12校驗結果:11 1100 1101 →(十六進制)→ 3CDH————————————————————————————————————看你自己能不能理解,CRC12校驗類模塊寫好了再給你發過去。

請大俠幫我將C代碼轉換成VB.Net,謝謝!

public function Calculate_CRC8(byval crc as uint16,byval n as uint16) as uint16

dim i as uint16

crc=crc xor n

for i=0 to 7

if crc and 1 then

crc=(crc1) xor H8c

else

crc=crc1

end if

next

return crc

end function

文章標題:包含vb.netcrc的詞條
瀏覽地址:http://www.2m8n56k.cn/article38/hcecsp.html

成都網站建設公司_創新互聯,為您提供響應式網站電子商務移動網站建設云服務器企業網站制作面包屑導航

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:[email protected]。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

網站托管運營
主站蜘蛛池模板: 亚洲国产精品线观看不卡 | 国产a网| 亚洲午夜精品一级在线 | 手机看片久久高清国产日韩 | 在线播放国产一区二区三区 | 国产精品久久久久久小说 | 欧美一级鲁丝片免费看 | 大片毛片 | 亚洲精品成人一区 | 国产精品二区高清在线 | 日韩欧美在线一级一中文字暮 | 亚洲欧美综合国产不卡 | 日韩精品视频美在线精品视频 | 99久久免费午夜国产精品 | 亚洲三区视频 | 精品久久免费视频 | 国产成人综合视频 | 免费一级毛片在线播放欧美 | 特级毛片aaa免费版 特级毛片a级毛免费播放 | 成人免费午夜性视频 | 高清一区二区在线观看 | 久久香蕉国产线看观看式 | 天堂在线www网亚洲 天堂在线视频网站 | 在线播放一级片 | 日韩欧美综合 | 精品国产看高清国产毛片 | 欧美黄色成人 | 亚洲欧美日韩精品久久亚洲区色播 | 久久国产精品久久久久久久久久 | 日产一区二区三区四区 | 一区在线免费观看 | 一区二区三区四区免费视频 | 99视频精品全国在线观看 | 久久99亚洲精品一区二区 | 午夜视频一区二区三区 | 99视频在线免费看 | cao美女| 免费看一级欧美毛片视频 | 欧美精品亚洲精品日韩一区 | 视频一区久久 | 亚洲午夜a|