Re: [問題] 程式碼改寫

看板Python作者 (←這人是超級笨蛋)時間12年前 (2013/10/14 23:45), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《blackspace98 (~我愛夏天~)》之銘言: : 我有一段Delphi的語法片段,如下 : function T1.Check(const s: String): String; : var : a, b: Integer; : h, l: Integer; : begin : b := 0; : for a := 1 to Length(s) do begin : b := b + Ord(s[a]); #字元轉成對應的10進制 : b := b and $FF; { 255 } #不懂為什麼要在加上{255} : end; : h := b div $10; #$10 表示16進制的10 : l := b mod $10; : Result := Chr(h + $30) + Chr(l + $30); : end; 我是現場惡補十分鐘 Pascal 來的, 所以可能有錯, 麻煩糾正XD 這個看起來就是在算資料 checksum 我想你自己應該比我更清楚實際的用途, 就不解釋了 Pascal 的 { } 似乎是註釋, 所以 { 255 } 不用理它 那一整行就是對 b 做 and 而已 : 我把他改寫成 : def Check(s): : j=0 : h=0 : l=0 : for i in s : : j=j+ord(i) : j = j & 0xFF : h=j / 0x10 : l=j% 0x10 : result= chr(h+0x30)+chr(l+0x30) : return result 我沒仔細看, 不過如果沒有初級錯誤 (變數寫法之類的) 的話邏輯沒問題 要注意傳入參數 (s) 的型別問題, 尤其如果你用 Python 3 的話 如果可以我個人會用 bytes/bytearray 來實作這整個東西, 避免一堆型別轉來轉去 不過至少就這個區塊而言, 這樣寫不會出現錯誤 : 由於這只是其中一個區塊,因此我還尚未測試 : 我想問的是,我這樣的改寫是否可行呢? : 可能還有遺漏的部分嗎?雖然看程式有沒有跑出正確結果就知道了 : 但是我怕我觀念有誤,會卡很久> < : 麻煩了各位了,謝謝:p -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.81.146

10/16 21:47, , 1F
謝謝你!! 真的沒有錯誤~
10/16 21:47, 1F
文章代碼(AID): #1IN168Lb (Python)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1IN168Lb (Python)