我想把一个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不同)。有什么建议吗?
的第三个参数 memcpy
是字节数*,而不是元素的数量。 所以你的第二个 memcpy
呼叫是不正确的。
char
的,技术上。 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);