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=]'
值,它就会停止复制。
有趣的是,您将复制数据的部分(可能只是显示数据的部分)排除在问题之外。所以我们不能告诉你那是哪个函数。但我们可以看到这就是正在发生的事情。
我目前正在学习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=]'
值,它就会停止复制。
有趣的是,您将复制数据的部分(可能只是显示数据的部分)排除在问题之外。所以我们不能告诉你那是哪个函数。但我们可以看到这就是正在发生的事情。