如何在char数组中合并两个数组以通过网络发送

时间:2018-08-19 04:59:22

标签: c++ serialization network-programming

假设有两个float64uInt8类型的数组。

float64 readanalog[40];
uInt8 data1[88];

我想将它们合并为一个char数组(或者也许为char *,以字节形式)并通过网络发送它们。每个浮点数64是8个字节,每个uInt8是一个字节,因此我需要一个((40 * 8)+ 88)408字节的数组。在将一个字节数组转换为两种类型并将两个数组合并为一个数组时,我尝试了很多方法,但均未成功。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

您很幸运,我有点想写一些代码...

char buffer[sizeof(readanalog) + sizeof(data1)];
memcpy(buffer, readanalog, sizeof(readanalog));
memcpy(buffer + sizeof(readanalog), data1, sizeof(data1));

请注意(如前面的注释中所述),如果所涉及的两台(或更多台)计算机在同一浮点表示法上不一致(尽管有可能全部使用IEEE 754),则可能会得到意外的结果。某些定点约定(例如,不是单位,而是成千上万个)有时可能更合适...此外,您需要考虑字节顺序(同样,所有涉及的CPU都使用很少的字节序)。