从串口接收到两个无符号的字节(byte)数据,想合并成一个带符号的整型(integer)数据,该怎么办,谢谢。

解决方案 »

  1.   

    先将两个无符号的字节(byte)数据用CInt强制转换为Integer再相加试试
      

  2.   

    LZ:你可以将由2进制接收的字节(byte)数据转换为16进制字符串形式,假如转换后是"ABCD",然后用Val("&H" & "ABCD"),即可获得有符整型数(integer)数据,但需注意接收字节哪个是高字节.
    2进制接收代码可参阅:http://topic.csdn.net/u/20081230/13/f1ffa8e3-f4c3-460f-afea-600ba01e919d.html我在2楼的答复.
      

  3.   

    function MakeWord(byval LoByte as byte, byval HiByte as byte) as integer
        MakeWord = LoByte Or _
                   ((HiByte And &H7F) * &H100) Or _
                   IIf((HiByte And &H80)<>0, &H8000, 0)
    end function
      

  4.   

    谢谢各位,我用了一个笨办法:
    lngResult = CLng(byteInputBuf(1)) * 256 + CLng(byteInputBuf(2))
    If lngResult > 32767 Then lngResult = -1 * (65536 - lngResult)
    可能效率低些,不过结果是正确的。
      

  5.   

    引用楼主 lzhco 的帖子:
    从串口接收到两个无符号的字节(byte)数据,想合并成一个带符号的整型(integer)数据,该怎么办,谢谢。 
    LZ:你可以将由2进制接收的字节(byte)数据转换为16进制字符串形式,假如转换后是"ABCD",然后用Val("&H" & "ABCD"),即可获得有符整型数(integer)数据,但需注意接收字节哪个是高字节. 
    2进制接收代码可参阅:http://topic.csdn.net/u/20081230/13/f1ffa8e3-f4c3-460f-afea-600ba01e919d.html我在2楼的答复. 
     
     这些东东在C或C++里很容易处理,但在VB里需要拐弯,有些麻烦,上面这个可能简单些