作者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/cn.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/cn.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