VB.net 里面的,从PLC取得2个十进制的16位整数,现在要将这2个整数,转化为一个32位整数
a=-28635 b= 5
c=364581
c=a * 65536 + b
c= (a << 16) + b
都不对么
请教高手,应该有什么公式,得到正确的C?
------解决思路----------------------
要完全用位操作,加或乘处理负数时有问题。
Module Module1
Sub Main()
f(-28635, 5)
f(5, -28635)
End Sub
Sub f(ByVal a As Short, ByVal b As Short)
Dim c As Int32 = (a And &HFFFF) Or (CInt(b) << 16)
Debug.Print("a = &H{0:X4} = {0}", a)
Debug.Print("b = &H{0:X4} = {0}", b)
Debug.Print("c = &H{0:X8} = {0}", c)
End Sub
End Module
a = &H9025 = -28635
b = &H0005 = 5
c = &H00059025 = 364581
a = &H0005 = 5
b = &H9025 = -28635
c = &H90250005 = -1876623355