看板 Python 關於我們 聯絡資訊
strA='\x04\x03\x04\x00\xa0\x00\x00' #string內容<04h>,<03h>,<04h>,........ crc = calcString( '\x04\x03\x04\x00\xa0\x00\x00', INITIAL) print(strA) print (hex(crc)) str = "04030400a00000" a='' for i in range(0,len(str),2): a += r"\x" + str[i:i+2] #string內容:\,x,0,4,\,x,0,3....... # or <5ch>,<78h>,<30h>,<34h>,........ print(a) crc = calcString( a, INITIAL) print (hex(crc)) b='' for i in range(0,len(str),2): b += chr(int(str[i:i+2],16)) #把string換成16進制的數字,再換成byte #(py2x沒有byte type,就別再意用詞了@@) print(b) crc = calcString( b, INITIAL) print (hex(crc)) 程式語言用久了,就會習慣expression和實際的data不太一樣了~ 你打進去給interpreter看的(你寫出來的)是expression 實際上在電腦中,或是你算出來( a+="\x" )的東西是data 很多高階語言會有eval(),repr()可以把它們互相轉換 But that is another evil.... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.245.32
blackspace98:謝謝您的說明~不過我執行之後,出現 01/06 20:31
blackspace98:UnicodeEncodeError: 'cp950' codec 01/06 20:32
blackspace98:can't encode character '\xa0' 01/06 20:32
blackspace98:因握我需要把crc再檢查一次,看看是否正確,所以那些 01/06 20:38
blackspace98:字串會一直變動,如果碰到像a的字串,又該怎麼處理呢 01/06 20:40
blackspace98:因為 字元 01/06 20:41
kdjf:因為你print的時候碰到顯示不了的字元.. 01/06 22:30
kdjf:把print(a)和print(b)先拿掉吧 01/06 22:31
blackspace98:原來如此!!感謝您~~ 01/07 16:20