為什麼等號(=)兩邊的值會不相等? |
缺席
|
xBug
一般會員 發表:27 回覆:17 積分:8 註冊:2003-06-10 發送簡訊給我 |
小弟要改寫公司前人留下的程式時發現下面這一個 Function,Function 中傳入的參數 Byte 值為 80,可是小弟在 Function 內加入兩道 ShowMessage 顯示 Function 的計算結果,忽然間發現,等號(=) 的兩邊值是不相等的,我臆測應該是 Result 型態是 Byte,而等號右邊計算出來的是 Integer,而 Delphi 自動轉換型別了~ 問題是,目前是以 C# 改寫下面 Function 使用 Convert.ToByte 後,出來的值是 113!? 想請問大大,我應該怎麼作才能確定問題的癥結,進而順利改寫到 C# 上? function EncryptByte(b: byte): byte; Result := (b xor ((StartKey shr 8) KeyOffset)) 33; ShowMessage(IntToStr((b xor ((StartKey shr 8) KeyOffset)) 33)); //這是我自己加上的,顯示 6898 |
pgdennis
資深會員 發表:41 回覆:526 積分:443 註冊:2002-05-23 發送簡訊給我 |
|
pgdennis
資深會員 發表:41 回覆:526 積分:443 註冊:2002-05-23 發送簡訊給我 |
|
pcplayer99
尊榮會員 發表:146 回覆:790 積分:632 註冊:2003-01-21 發送簡訊給我 |
byte 是 1 个 byte, Integer 是 4 个 byte.
那么,你拿一个 byte 类型的东西去和一个 4个 byte 类型的东西去做 xor,结果你还想得到一个 byte 的东西,我自己没写代码测试,我猜应该是得到一个 Integer 的4个 byte 中的最后一个。也就是你最后计算结果的那个 Integer 被截短了后,剩下的那个 byte ===================引 用 文 章=================== 小弟要改寫公司前人留下的程式時發現下面這一個 Function,Function 中傳入的參數 Byte 值為 80,可是小弟在 Function 內加入兩道 ShowMessage 顯示 Function 的計算結果,忽然間發現,等號(=) 的兩邊值是不相等的,我臆測應該是 Result 型態是 Byte,而等號右邊計算出來的是 Integer,而 Delphi 自動轉換型別了~ 問題是,目前是以 C# 改寫下面 Function 使用 Convert.ToByte 後,出來的值是 113!? 想請問大大,我應該怎麼作才能確定問題的癥結,進而順利改寫到 C# 上? function EncryptByte(b: byte): byte; Result := (b xor ((StartKey shr 8) KeyOffset)) 33; ShowMessage(IntToStr((b xor ((StartKey shr 8) KeyOffset)) 33)); //這是我自己加上的,顯示 6898 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |