将int添加到char数组中

时间:2015-09-23 06:10:38

标签: c++ arrays char

我尝试转换int(4bytes)并将其添加到chars数组中。我使用从stackoverflow找到的代码将int从int转换为char。

unsigned char buffer[4];
buffer[0] = (value >> 24) & 0xFF;
buffer[1] = (value >> 16) & 0xFF;
buffer[2] = (value >> 8) & 0xFF;
buffer[3] = value & 0xFF;

其中value是我想要转换的int值。 它工作得非常好,例如,如果我使用上面的代码转换值100,它将提供以下内容:' \ 0',' \ 0',&#39 ; \ 0',' d'

我试图将它添加到我拥有的char数组中(它在索引i处添加,而不是在索引0处),但由于第1个字符为null,因此我的char(cstring)数组得到从那里切断。所以我只能看到字符串uptil索引i - 1,并且由于null来自索引i,我的cstring结束于那里。我想知道是否有人知道如何克服这种情况。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

如果要移动二进制数据,请勿使用strcpy或任何str*命令。请改用memcpy

unsigned char buffer[4];
buffer[0] = (value >> 24) & 0xFF;
buffer[1] = (value >> 16) & 0xFF;
buffer[2] = (value >> 8) & 0xFF;
buffer[3] = value & 0xFF;
memcpy(otherstring + offset, buffer,sizeof(buffer));

char* buffer = otherstring + offset;
buffer[0] = (value >> 24) & 0xFF;
buffer[1] = (value >> 16) & 0xFF;
buffer[2] = (value >> 8) & 0xFF;
buffer[3] = value & 0xFF;