解协议时有符号和无符号整形处理

Posted cnsend

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解协议时有符号和无符号整形处理相关的知识,希望对你有一定的参考价值。

来自森大科技官方博客
http://www.cnsendblog.com/index.php/?p=309
GPS平台、网站建设、软件开发、系统运维,找森大网络科技!
http://cnsendnet.taobao.com

 

1、问题:网关解析正确,我.net这边解析错误,原因是,本来是无符号的,我搞成了有符号的了。

技术图片

3、WORD:无符号双字节整形

技术图片

技术图片

5、0x800A转十进制为32758

技术图片

原因是:以下两种写法是等价的,IPAddress.NetworkToHostOrder()不能接收UInt16类型,所以把BitConverter.ToUInt16(arr, 0)强制转化成Int32再转序的。

技术图片

6、写法一:一定要“网络序转主机序”后,再取绝对值,否则会有问题,写法一也有问题,最好不要用

技术图片

事实证明,写法一也有问题

技术图片

7、写法二:“网络序转主机序”后,再转化成UInt16无符号双字节整形

技术图片

原理:Int16比UInt16左边多了FFFF,应该这个就是符号吧

技术图片

技术图片

 

来自森大科技官方博客
http://www.cnsendblog.com/index.php/?p=309
GPS平台、网站建设、软件开发、系统运维,找森大网络科技!
http://cnsendnet.taobao.com

以上是关于解协议时有符号和无符号整形处理的主要内容,如果未能解决你的问题,请参考以下文章

有符号位和无符号位。——int8疑问有感

C语言里怎样理解长整型 短整型 和无符号型变量和常量?

Golang 入门 : 整型

Swift3.0教程-基本数据类型

为啥在有符号和无符号表示之间转换一个数字?

汇编优化系列关于符号扩展和无符号扩展(包括mips msa实现)