C++ 如何构建字节数组?

C++ How can i build byte arrays?

我目前正在学习c++,我是初学者。因为对我不太严格:D

我用 C++ 编写了一个 winsocket udp 客户端。现在将字节数组(如 54-53-33-49-4E-49-54-31-00-65-00-00-88-06-3B-EC-E9-00-5A-6D-F3-12-C9-B6-6E-82-00-00-00-00-00-00-00-00)发送到远程 udp 服务器。这是我的问题。我像那样在 C# 中构建数组

byte[] sendData= new byte[versionLen + initTypeLen + 4 + 4 + 8];
byte[] Initversion = { 0x06, 0x3b, 0xec, 0xe9 };
Array.Copy(Initversion, 0, sendData, 0, versionLen);
[...]

现在在 C++ 中我遇到了非常严重的问题。首先我正确理解我必须在 chars []?

中构建它

我的尝试:

char init1[/*VersionLength + InitPackLength + TimestampLength + 4 + 8*/ 9];
char Initversion[] = { 0x06, 0x3b, 0xec, 0xe9 };
char StepNumber[] = { 0x00 };

init1[0] = 0x06;
init1[1] = 0x3b;
init1[2] = 0xec;
init1[3] = 0xe9;
init1[4] = 0x00;
init1[5] = 0x06;
init1[6] = 0x06;
init1[7] = 0x06;
init1[8] = 0x06;

但结果:06-3B-EC-E9 C++ 删除了 0x00 之后的所有字节。我该如何解决?什么是正确的解决方案?

谢谢。

编辑:那是我的代码:https://paste.ee/p/vfYf4

在 C 和 C++ 中,常规字符串以 '[=10=]' 字符结束。所以看起来您正在使用字符串函数来复制数据。也就是说,一旦达到 '[=10=]' 值,它就会停止复制。

有趣的是,您将复制数据的部分(可能只是显示数据的部分)排除在问题之外。所以我们不能告诉你那是哪个函数。但我们可以看到这就是正在发生的事情。