一个32位的2进制数分4次通过串口发送到PC,PC得到4个字节的2进制数,分别在数组的buffer(0)——buffer(3)
怎么把这4个数合并成一个数。也就是还原成那个32位2进制的数。

解决方案 »

  1.   

    那要看你是按什么格式发送的。
    如果你是高字节在前,则Dim n As Long, i As IntegerFor i = 0 To 3
        n = n * 2
        n = n + buffer(i)
    Next i反之
    For i = 3 To 0 Step -1
        n = n * 2
        n = n + buffer(i)
    Next i
      

  2.   

    你需将接收的4字节BYTE数据按通信协议接收后转为16进制的字符串形式,然后用如下代码方式处理成10进制数:
    Dim a As Long
    Dim b As Variant
    Text1 = "ABCDEF00"
    b = Text1
    a = Val("&H" & b)
    Text2 = a 'Text2 显示其10进制值为-1412567296
      

  3.   

    shiningfly2006 () 的意思应该是将 4 个 Byte 转换成一个 Long 吧?function BytesToLong(buffer() as byte) as long
      dim i as long 
      dim l as long 
      for i= 3 to 0 step -1
        l = l * &H100 + (buffer(i) and iif(i=3, &H7f, &Hff))
      next
      if (buffer(3) and &H80) <> 0 then l = l or &H80000000
      bytestolong = l
    end function
      

  4.   

    Dim n As Long, i As IntegerFor i = 0 To 3
        n = n * 256
        n = n + buffer(i)
    Next i反之
    For i = 3 To 0 Step -1
        n = n * 256
        n = n + buffer(i)
    Next i