首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

关于vb负数转换2字节有关问题

2013-12-02 
关于vb负数转换2字节问题我看了of123的程序:dim Num as INTEGER dim Buffer(0 to 1) as BYTE dim strNum a

关于vb负数转换2字节问题
我看了of123的程序:
dim Num as INTEGER 
dim Buffer(0 to 1) as BYTE 
dim strNum as string
   (1).负数如何转换成2个字节 
    strNum = Right("000" & Hex(-80), 4)
    Buffer(0) = Val("&H" & Left(strNum, 2))
    Buffer(1) = Val("&H" & Right(strNum, 2))
 
   (2).2个字节合成一个整数 
    Num = Val("&H" & Right("0" & Hex(Buffer(0)), 2) & Right("0" & Hex(Buffer(1)), 2))
这个程序能用,可我不明白道理,请老师指点,
[解决办法]
还要保证数据中不能出现 02 和 03。

你这个协议有点问题。最好的 02 之后附加一个长度域(需要几个字节要根据你可能的最长数据块来确定)。这样接收端就知道长度,不必根据接收到的信息的值来判断是否包头和包尾。

还有一种方法,是将你所有的传输数据改成 ASCII 码(数据长度要增加一倍)。

例如,你要发送数据 0x02, 0x03,就要将这 4 个半字节看作字符,转换成 0x30, 0x32, 0x30, 0x33 来发送。这样就可以保证你的数据中不会有 02, 03 这样的数据。当然,恢复数据时要逆向转码。

热点排行