Re: [VB6 ] checksum問題

看板Visual_Basic作者 (他X的政府拆我家)時間13年前 (2012/08/02 21:33), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串3/3 (看更多)
雖然是舊文,剛好我也碰到這問題,提出我寫的方式,給需要的人參考。 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
文字變byte可以用 byte1 = StrConv(data, vbFromUnicode)
08/03 00:17, 1F
文章代碼(AID): #1G6e6_gE (Visual_Basic)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):
文章代碼(AID): #1G6e6_gE (Visual_Basic)