我希望将int数组转换为char数组,然后再将其转换回来,以便进行序列化。 它不需要跨平台工作。
我想出了
//sample int array
int arr[] = {1,2,3,4,100};
char char_arr[sizeof(arr)];
//int arr to char arr
memcpy(char_arr, arr, sizeof(arr));
int newarr[sizeof(char_arr)/sizeof(int)];
//char arr back to int arr
memcpy(newarr, char_arr, sizeof(char_arr)/sizeof(int));
但这似乎不起作用(newarr包含与arr不同的值)。有什么建议吗?
答案 0 :(得分:6)
memcpy
的第三个参数是字节数 * ,而不是元素数。因此,您的第二次memcpy
来电不正确。
<小时/> *技术上
char
的数量。
答案 1 :(得分:0)
memcpy复制内存字节,而不是数组元素,因此不会为您进行数组元素转换。如果要将字符数组转换为整数数组,可以尝试使用std :: copy逐个元素地复制容器。
int newarr[sizeof(char_arr)/sizeof(char_arr[0])];
std::copy(&char_arr[0], &char_arr[sizeof char_arr/sizeof char_arr[0]], newarr);