将一个int数组转换为一个char数组,然后通过c ++中的memcpy返回

时间:2011-12-09 11:39:03

标签: c++ c memcpy

我希望将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不同的值)。有什么建议吗?

2 个答案:

答案 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);