C++ 反序列化C+中的字节数组+;它是用C序列化的#
我有一个数组,我用C#编程语言将其转换为字节。C++ 反序列化C+中的字节数组+;它是用C序列化的#,c++,arrays,deserialization,tcp-ip,C++,Arrays,Deserialization,Tcp Ip,我有一个数组,我用C#编程语言将其转换为字节。CameraSpacePoint的定义如下: namespace Microsoft.Kinect { public struct CameraSpacePoint { public float X; public float Y; public float Z; } } class CameraSpacePoint { public: float X; floa
CameraSpacePoint
的定义如下:
namespace Microsoft.Kinect
{
public struct CameraSpacePoint
{
public float X;
public float Y;
public float Z;
}
}
class CameraSpacePoint
{
public:
float X;
float Y;
float Z;
};
为了将CameraSpacePoint
数组转换为字节,我在C#中使用了以下方法:
然后使用TCP传输字节数组。我试图通过以下方式在另一台机器上接收此字节数组:
#include <ros/ros.h>
#include <boost/asio.hpp>
constexpr size_t data_size = 512 * 424;
unsigned char data_buffer[data_size];
boost::asio::read(socket, boost::asio::buffer(data_buffer, data_size));
我想知道如何将字节数组转换回我定义的
CameraSpacePoint
objectofarray?C#编程语言中的内存布局和对象序列化与C/C++中的类似概念无关。拥有不同的编译器/ OSES,即使在C++到C++场景中,对于相同的结构或类(根据内存布局等),也可能会得到不同的内存布局。
您真正需要的是两种语言的通用协议来序列化和反序列化相似的对象。有一些序列化库支持两种语言:
- 支持C#和C++
支持C和C++,它是平台中立的。(例如,您可以使用它在big-endian ARM和little-endian x86_64之间进行序列化/反序列化)
- 支持C#和C++
支持C和C++,它是平台中立的。(例如,您可以使用它在big-endian ARM和little-endian x86_64之间进行序列化/反序列化)
class CameraSpacePoint
{
public:
float X;
float Y;
float Z;
};