我正在扩展一个VB6应用程序,该应用程序与小型嵌入式系统通信以使用串行端口(它们目前使用UDP广播);因此我试图通过串口模拟UDP数据包。
部分内容包括标题中的消息长度,长度为两个字节。
如何将VB6中的整数转换为两个字节(byte(2)),以便用C语言编写的拾取消息的程序可以将其转换为短整数?
答案 0 :(得分:2)
最简单的方法就是这样做。
Private Type IntByte
H As Byte
L As Byte
End Type
Private Type IntType
I As Integer
End Type
Public Sub Convert(ByVal I as Integer, ByRef H as Byte, ByRef L as Byte)
Dim TempIT As IntType
Dim TempIB As IntByte
TempIT.I = I
LSet TempIB = TempIT
H = TempIT.H
L = TempIT.L
End Sub
您可以使用此技术将其他数据类型分解为字节。
Private Type LongByte
H1 As Byte
H2 As Byte
L1 As Byte
L2 As Byte
End Type
Private Type DblByte
H1 As Byte
H2 As Byte
H3 As Byte
H4 As Byte
L1 As Byte
L2 As Byte
L3 As Byte
L4 As Byte
End Type
答案 1 :(得分:1)
看到它将是二进制数据,您应该在字节数组中构建数据包,这样您就可以使用CopyMemory从一个位置复制到另一个位置,只需确保使用{{1}交换字节顺序API函数。
您还可以使用基本数学来分配每个字节:
htons()
请记住,正常的网络字节顺序与Windows不同(在x86和x64上),因此最重要的字节优先。