作者sec2 (sec2)
看板C_Sharp
標題Re: [問題] short整數資料overflow解決方式
時間Mon Jul 25 10:44:33 2022
※ 引述《sec2 (sec2)》之銘言:
: 標題: Re: [問題] short整數資料overflow解決方式
: 時間: Sun Jul 24 14:55:09 2022
:
: short a = -1;
:
: var b = BitConverter.GetBytes(a);
:
: var c = BitConverter.ToUInt16(b);
:
: c 應該就是你要的了 (=65535)
:
: --
:
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.110.213.245 (臺灣)
: ※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_Sharp/M.1658645711.A.8D2.html
: → t64141: 溢位是破壞性的,65535溢位成-1,131071也溢位成-1,所以由-1 07/24 22:46
: → t64141: 反推不一定是正確的 07/24 22:46
: → sec2: 原生 API 就是只回傳 short,不存在 131071 這種問題 07/25 10:17
今天找時間翻了一下 MX Component Programming Manual
https://dl.mitsubishielectric.com/dl/fa/document/manual/plc/sh081085eng/sh081085engs.pdf
https://bit.ly/3BeBAvS
若是原 PO 所述使用 Act 方式呼叫 ReadDeviceRandom2 的話
原生 API 的確只能回傳 short 2-byte 的資料
但如果使用 ReadDeviceRandom 而非 ReadDeviceRandom2 的話
原生 API 是可以回傳 int (4-byte) array 的
可能要等原 PO 試試看囉
我手上沒有相關裝置
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.110.213.245 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_Sharp/M.1658717077.A.D62.html
※ 編輯: sec2 (140.110.213.245 臺灣), 07/25/2022 10:56:09
1F:推 s4300026: 你人真好,這種事情直接請原po找廠商或代理商給範例就好 07/25 16:18
2F:→ s4300026: 了。 07/25 16:18
3F:→ popo14777: ReadDeviceRandom的方法,回傳數值範圍是1~65535(不帶 07/26 21:39
4F:→ popo14777: 負號) 07/26 21:39