我已经包装了一个dll方法,它在Web服务中有一个整数作为out参数.在测试中,我发现当我期待-1时,我得到的是65,535.我意识到dll使用的是16位整数,我在代码中引用外部dll时指定了标准的.NET 32位整数.通过指定一个16位整数很快就可以解决这个问题.
我的问题是为什么会发生这种情况?如果我试图在16位整数中拟合一个32位整数,我可以理解发生溢出但是我不太确定为什么这会发生反过来.显然,我对类型之间的类型铸造的理解有点缺乏,因此任何指导都将受到高度赞赏.
16位整数"-1"设置全部16位.如果设置32位整数的低16位,则值为65,535.有关负内部的内部表示的解释,请查看本文.