作者kdjf (我抓得到什麼呢?)
看板Python
標題Re: [問題] crc檢查
時間Sun Jan 6 14:29:47 2013
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