如何在C++中将整数转换为字节,以便 Unity 在通过 UDP 传输后能够理解它们
How to convert Integers to Byte in C++ so that Unity can understand them after transfer via UDP
我需要通过UDP将两个INT16值作为4个字节发送到Unity。当我使用数据包发送器并发送十六进制(例如"f1 ff 0f 00"(时,Unity 会按预期在 Unity 中将各自的十六进制转换回 INT。
但是,我不能让这在C++工作。
我可以从我的C++代码发送数据,如下所示:
boost::asio::io_service io_service;
udp_send client(io_service, "127.0.0.1", "8052");
client.send("F1FF0F00");
我还能够在C++中创建正确的十六进制格式,表示十六进制整数(%x 格式(。不幸的是,这些十六进制格式都是 %x 的数组,上面的提升发送方法不接受这些数组。
我尝试将各种字符串发送到 Unity - 但是,Unity 接收的数据无法正确解释 - 因此我的转换无法根据需要工作。
下面是 C# 中的一个例程,它完成了我正在寻找的功能。出于我的目的,我需要类似的东西C++:
//empty UDP buffer
byte[] UDP_Data = new byte[8];
//add steering data to buffer
Int16 twobytes = (Int16)(15);
byte[] intBytes = BitConverter.GetBytes(twobytes);
UDP_Data[0] = intBytes[0];
UDP_Data[1] = intBytes[1];
//add speed data to buffer
twobytes = (Int16)(-15);
intBytes = BitConverter.GetBytes(twobytes);
UDP_Data[0] = intBytes[0];
UDP_Data[1] = intBytes[1];
// send via UDP
client.Send(UDP_Data, UDP_Data.Length, ep)
有没有人知道如何在 C++ 中重写与上述 C# 类似的代码,以便 Unity 接收的数据是正确的?任何帮助都非常感谢。
你在文本和十六进制之间感到困惑。
这是文本"F1FF0F00"
而不是十六进制。
这是十六进制
uint8_t udp_data[4] = { 0xF1, 0xFF, 0x0F, 0x00 };
相关文章:
- 从udp接收帧对于人脸识别来说太慢
- 通过套接字[TCP]传输数据 如何在C / C ++中打包多个整数并使用send() recv()传输数据
- VSOMEIP-2个设备之间的通信(TCP/UDP)不工作
- Angelscript从C++传输数组
- 如何将图像传输到c++(dll)中的缓冲区,然后在c#的缓冲区中读/写
- 从服务器传输到客户端的消息不会出现
- 如何使用 Boost Asio 在 Android 上获取我的本地 udp IP 地址?
- 如何通过 UDP 传输数据 (XML)?
- 序列化双精度以通过 UDP(ARM 到 x86)传输
- 如何在C++中将整数转换为字节,以便 Unity 在通过 UDP 传输后能够理解它们
- 在UDP(MPEGTS)中流式传输时FFMPEG损坏的帧
- SuperPoweredAndroidaudioio和UDP插座音频传输
- 使用 UDP 进行端口到端口数据传输
- 使用 UDP 传输对象黑白客户端/服务器
- 流式传输udp数据到队列
- 使用UDP和套接字进行客户端-服务器文本文件传输 在C++中,服务器创建一个空白文件
- Boost c++ UDP示例不能通过internet传输
- UDP数据包传输和c++
- 无法在无线网络上通过UDP广播进行快速传输
- UDP 传输和维护网络字节顺序