VB6 整数到两个字节(C 短)通过串行发送
我正在扩展一个 VB6 应用程序,该应用程序与小型嵌入式系统通信以使用串行端口(它们当前使用 UDP 广播);因此我试图通过串行模拟 UDP 数据包。
其中一部分包括标头中的消息长度,该长度为两个字节。
如何将 VB6 中的整数转换为两个字节( byte(2) ),以便用 C 编写的接收消息的程序可以将其转换为短整数?
I'm expanding a VB6 application which communicates with small embedded systems to use the serial port (they currently use UDP broadcasts); and thus am trying to emulate UDP packets over serial.
Part of this includes a message length in the header, which is two bytes long.
How can I convert an integer in VB6 to two bytes ( byte(2) ) so that program written in C that picks up the message can cast it to a short integer?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
最简单的方法就是这样做。
您可以使用此技术将其他数据类型分解为字节。
The easiest way is to do this.
You can use this technique to break up other data types into bytes.
由于它将是二进制数据,您应该在字节数组中构建数据包,这样您就可以使用 CopyMemory 从一个位置复制到另一个位置,只需确保使用 htons() 交换字节顺序即可 API 函数。
您还可以使用基本数学来分配每个字节:
请记住,正常的网络字节顺序与 Windows(在 x86 和 x64 上)不同,因此最重要的字节首先出现。
Seeing as it'll be binary data, you should be building the packet in a byte array so you can just use CopyMemory to copy from one location to the other, just make sure you swap the byte order using the
htons()
API function.You can also use basic maths to assign each byte:
Remember the normal network byte order is different to Windows (on x86 and x64) so the most significant byte goes first.