C#中温控器通信遇到的问题总结(1)
24应届生实习转正后开始上手负责项目中部分内容,主要负责温控器通信部分。工作的主要内容为向台达中发送指令,读取和写入补偿值,在发送指令时发现指令发送正确,但是就是接收不到正确的数据,困扰我好久的问题在求助公司大佬后发现在字节转换部分出了问题。在字节转换的部分自己一直晕晕乎乎,等到任务完成后整理总结这一部分相关的内容,给大家一个参考也欢迎指出来我的不足。
Int16, Int32,Int64的用法
-
Int16(short)内存占用2个字节(16位)。范围在-32768 ~ 32767。
-
Int32(int)内存占用4个字节(32位)。范围在-2147483648 ~ 2147483647。
-
Int64(long)内存占用8个字节(64位)。范围在 -9223372036854775808 ~
9223372036854775807。
Convert.ToInt16,Convert.ToInt32的使用
C#中Convert方法用于任意数据类型转换(在不超过数据类型范围的情况下)。 由于要显示从指令中获取的温度,得到的是一个负的温度。
原先使用的转换方式是Convert.ToInt32(“FF38”,16)得到的内容为65536,数据内容指定不对,后改为Convert.ToInt16(“FF38”,16)得到-200。
Convert.ToInt16(“FF38”,16)在计算机中,Int16 类型的值通常使用 16 位(2 字节)的二进制补码形式来表示,将其转换为原码对应的十进制即为-200。