作者uranusjr (←这人是超级笨蛋)
看板Python
标题Re: [问题] 程式码改写
时间Mon Oct 14 23:45:08 2013
※ 引述《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
1F:→ blackspace98:谢谢你!! 真的没有错误~ 10/16 21:47