C++字符数组转换为十六进制数组或字符数组 我希望能得到一些C++专家的建议。我有一个字符数组 <unsigned char ch1[100];>
数据ASCII码在这个最大6或8个数组空间中填充,其余为空。我只想将数组中的有效位转换为十六进制或再次转换为字符数组。我试过了C++字符数组转换为十六进制数组或字符数组 我希望能得到一些C++专家的建议。我有一个字符数组 <unsigned char ch1[100];>,c++,C++,数据ASCII码在这个最大6或8个数组空间中填充,其余为空。我只想将数组中的有效位转换为十六进制或再次转换为字符数组。我试过了 <memcpy (ch1,ch2,sizeof(ch1))> 但所有垃圾值也会被复制…: <strcpy gives me an error> 复制的字节数也是动态的1倍:-4;2次:-6次 所以只复制实际初始化的字符。作为程序员,您有责任跟踪哪些已初始化,哪些未初始化。您知道数组中有多少有效字节吗?如果是,您可以将该
<memcpy (ch1,ch2,sizeof(ch1))>
但所有垃圾值也会被复制…:
<strcpy gives me an error>
复制的字节数也是动态的1倍:-4;2次:-6次 所以只复制实际初始化的字符。作为程序员,您有责任跟踪哪些已初始化,哪些未初始化。您知道数组中有多少有效字节吗?如果是,您可以将该数字作为memcpy的第三个参数传入 否则,您可以对数组进行零初始化并使用strcpy,strcpy将在第一个零处停止:
char ch1[100];
// zero out the array so we'll know where to stop copying
memset(ch1, 0, sizeof(ch1));
... data gets filled here ....
strcpy (ch2, ch1);
// zero out array again so we'll catch the next characters that come in
memset(ch1, 0, sizeof(ch1));
... life goes on ...
请详细说明有效位。复制的字节数是动态的,不断更改:我将设置ch1 101字节,以确保始终具有“\0”终止符。您还假设输入不包含“\0”字符。因此请使用上述代码。零初始化数组,用strcpy读取,然后再将其归零。@Martin York:100适合memset,我估计他只需要输入6-8个字符。但总的来说,我对这个项目感觉不太好