当前位置: 代码迷 >> VB Dotnet >> 2个十进制的16位整数转化为32位,该如何解决
  详细解决方案

2个十进制的16位整数转化为32位,该如何解决

热度:70   发布时间:2016-04-25 02:08:40.0
2个十进制的16位整数转化为32位
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
  相关解决方案