在c++中通过memcpy将int数组转换为char数组并返回。

问题描述 投票:3回答:2

我想把一个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不同)。有什么建议吗?

c++ c memcpy
2个回答
6
投票

的第三个参数 memcpy 是字节数*,而不是元素的数量。 所以你的第二个 memcpy 呼叫是不正确的。


*数量 char的,技术上。

0
投票

memcpy 拷贝的是内存字节,而不是数组元素,因此不会为你进行数组元素转换。如果你想将一个chars数组转换为ints数组,你可以尝试使用 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);
© www.soinside.com 2019 - 2024. All rights reserved.