C++如何将数据类型如整数和浮点编成字节串? 进入C++的socket编程,我想找到一种方法,将一系列数据类型编成一个字节串,通过一个socket使用UDP来发送。

C++如何将数据类型如整数和浮点编成字节串? 进入C++的socket编程,我想找到一种方法,将一系列数据类型编成一个字节串,通过一个socket使用UDP来发送。,c++,sockets,unix,serialization,marshalling,C++,Sockets,Unix,Serialization,Marshalling,这是方法头 char * Message::marshal( int &n) 我需要封送的一系列数据类型包括: int int int int float //need to be all marshaled into the same byte string 长度保存为n,字节字符串以字符数组形式返回。我还想知道如何解组这一串字节 我所做的服务器很可能没有Boost库,可能没有更新到C++ 11。我所在的上一个服务器没有,所以我假设他们还没有更新它们 我看到的一种序列化方法是使用

这是方法头

char * Message::marshal( int &n)
我需要封送的一系列数据类型包括:

int int int int float  //need to be all marshaled into the same byte string
长度保存为n,字节字符串以字符数组形式返回。我还想知道如何解组这一串字节

<>我所做的服务器很可能没有Boost库,可能没有更新到C++ 11。我所在的上一个服务器没有,所以我假设他们还没有更新它们

我看到的一种序列化方法是使用流,但我看到了一些关于不可移植性的东西我正在windows中编写源代码,然后我将对unix做一些更改,并在unix服务器上编译它


<>我需要使用标准C++库的东西,因为我对服务器没有控制。

我最终找到了一个解决方案。因为客户端和服务器在同一台机器上,所以不必费心将双字节顺序转换为网络字节顺序。对于UDP,请确保将结构强制转换为char*

,对于整数类型,可以使用htons、htonl、ntohs和ntohl进行字节排序。双打。你为什么要通过引用获取int?@RyanHaining,我可以自由地将该变量更改为float而不是double,引用将存储字节字符串的大小,以便调用对象具有该大小,以便套接字组装数据包。我也在更新需要被封送的变量的信息。如果你不是为了好玩而做这个,你应该看看@ RyaHaAIN,我无法控制服务器上安装了什么,所以我需要使用C++默认的。@ RyhanHAIN,如果你有任何代码示例,那将是非常值得赞赏的。