Re: [VB6 ] checksum問題
雖然是舊文,剛好我也碰到這問題,提出我寫的方式,給需要的人參考。
Private Sub Command1_Click()
Dim Checksume As Byte '宣告Checksume 為 Byte
Checksume = 0 '設定初始值
For i = 1 To Len(Text1.Text) '新增物件文字盒Text1,並計算文字盒字數
Checksume = Checksume Xor Asc(Mid(Text1.Text, i, 1))
'將Text1內文字逐一取出並將轉成Asc格式後與Checksume 做Xor
Next i
Text2.Text = Chr(Checksume) '將Xor結果顯示在Text2文字盒內
End Sub
參考看看,我也是參考別人後套用的。
※ 引述《colawei (D逃)》之銘言:
: ※ 引述《badsan (.........)》之銘言:
: : 請問一下各位前輩....
: : 我想做一各 xor checksum 的驗證 function
: : 希望各位大大可以指點一下...
: : Xor Checksum 他的流程原理是怎樣跑的??
: : 當然能盡量詳細一點越好~_~...(小弟不才理解力不夠好...)
: CheckSum: 通常用在資料傳輸上,為確保資料的完整性及正確性,
: 而在每個封包或資料錄後面加入的檢查位元.
: 市面上常用的CheckSum有Xor及CRC.其它還有漢明檢測法等等很多
: 基本上CheckSum的演算法在製定Protocol時會同時規定好
: 使用何種演算法.對哪些任容做運算等等.
: 而我們使用的 Xor CheckSum ,通常採用Byte by Byte,
: 一個位元組一個位元組算.
: 例如當資料內容是"APPLE"時.
: Xor CheckSum= "A" xor "P" xor "P" xor "L" xor "E"
: = 0x48
: = "H"
: 所以最後送出的內容會是 "APPLEH"
: : 假設我要一次送出16進位的 1F 20 01 這樣的字串數值做 xor checksum
: : 那結果會得到多少??
: : 是不是要先將上面數值轉成2進制
: : 00011111 00010100 00000001
: : 接下來該做那些步驟流程??
: 在VB中,可以直接對數字做XOR, 所以不用轉二進位.
: 直接用ASC()加迴圈取出值就好了
: 上例的結果=00001010
: : 希望有大大可以幫忙指點一下...對Xor Checksum 這真的一點觀念都沒有....
: : 我是想自己寫啦...只是不知從何寫起...完成不知道整各運作過程...
: : 所以要請各位前輩指點指點...
: : 當然如果有好心大大願意直接提供code讓我自己參考慢慢研究也行...
: : 先跟各位說聲謝謝了...
: 手邊沒有簡單點的例子,如果還有不清楚的再上來問吧.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 106.1.134.54
推
08/03 00:17, , 1F
08/03 00:17, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):
Visual_Basic 近期熱門文章
PTT數位生活區 即時熱門文章