如何将两个数组合并到一个字符数组中以通过网络发送
How to merge two array in a char array for sending over network
假设有两个类型为 float64
和 uInt8
的数组。
float64 readanalog[40];
uInt8 data1[88];
我想将它们合并到一个 char 数组中(或者可能是 char*,以字节形式)并通过网络发送它们。每个 float 64 是 8 个字节,每个 uInt8 是一个字节,所以我需要一个 ((40*8) + 88) 408 字节的数组。在字节数组中转换两种类型并将两个数组合并到一个数组中,我尝试了很多方法但没有成功。有人可以帮忙吗?
你很幸运,我有心情写一些代码...
char buffer[sizeof(readanalog) + sizeof(data1)];
memcpy(buffer, readanalog, sizeof(readanalog));
memcpy(buffer + sizeof(readanalog), data1, sizeof(data1));
请注意(如评论中所述),如果所涉及的两台(或更多台)计算机不同意相同的浮点表示法(尽管所有计算机都使用 IEEE 754 来表示),您可能会得到意想不到的结果).一些定点约定(例如,不是单位,而是数千)有时可能更合适......此外,您需要考虑字节序(再次有可能所有相关 CPU 使用小端)。
假设有两个类型为 float64
和 uInt8
的数组。
float64 readanalog[40];
uInt8 data1[88];
我想将它们合并到一个 char 数组中(或者可能是 char*,以字节形式)并通过网络发送它们。每个 float 64 是 8 个字节,每个 uInt8 是一个字节,所以我需要一个 ((40*8) + 88) 408 字节的数组。在字节数组中转换两种类型并将两个数组合并到一个数组中,我尝试了很多方法但没有成功。有人可以帮忙吗?
你很幸运,我有心情写一些代码...
char buffer[sizeof(readanalog) + sizeof(data1)];
memcpy(buffer, readanalog, sizeof(readanalog));
memcpy(buffer + sizeof(readanalog), data1, sizeof(data1));
请注意(如评论中所述),如果所涉及的两台(或更多台)计算机不同意相同的浮点表示法(尽管所有计算机都使用 IEEE 754 来表示),您可能会得到意想不到的结果).一些定点约定(例如,不是单位,而是数千)有时可能更合适......此外,您需要考虑字节序(再次有可能所有相关 CPU 使用小端)。