【发布时间】:2014-09-25 02:41:47
【问题描述】:
我正在尝试实现一个具有以下结构的应用网络协议:
|First 2 bytes is the command|next 4 bytes is the payload length|and then the payload|
命令是一个字符[2],有效载荷长度是一个字符[4]。
我正在使用以下函数将有效负载长度 (int) 转换为 4 字节数组。如果有效载荷长度小于 256 字节,则保存该值的数组的前 3 个字节为空,只有最后一个包含该值。
void intToBytes(int value, char *buffer)
{
buffer[0] = (value >> 24) & 0xff;
buffer[1] = (value >> 16) & 0xff;
buffer[2] = (value >> 8) & 0xff;
buffer[3] = value & 0xff;
}
如何将命令 char[2]、有效载荷长度 char[4] 和有效载荷 char[any] 合并到一个新的 char 数组中?
我试过了:
strcpy(msg,command);
strcat(msg,payloadlength);
strcat(msg,payload);
但 msg char 数组仅包含命令和有效负载,并忽略有效负载长度字节。我在这里做错了什么?
【问题讨论】:
-
C 还是 C++?答案会大不相同。
-
@hyde: 项目是 C++
-
好的,删除了 C 标签。另请注意,除非您使用
using namespace std,否则您应该将std::strcpy用于来自#include <cstring>的函数。离开std::大部分都可以工作,但C++ 标准不保证。