[英]Converting an array of int to an array of char and back via memcpy in c++
I want to convert an array of int to an array of char and then back again, for serialization purposes.我想将 int 数组转换为 char 数组,然后再返回,以进行序列化。 It does not need to work cross-platform.
它不需要跨平台工作。
I came up with我想出了
//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));
This does not seem to work however (newarr contains values different from arr).然而,这似乎不起作用(newarr 包含与 arr 不同的值)。 Any suggestions?
有什么建议?
The third argument to memcpy
is number of bytes * , not number of elements. memcpy
的第三个参数是字节数* ,而不是元素数。 So your second memcpy
call is incorrect.所以你的第二个
memcpy
调用是不正确的。
char
s, technically.
char
数。
memcpy
copies memory bytes, not array elements and thus does no array element conversion for you. memcpy
复制内存字节,而不是数组元素,因此不会为您执行数组元素转换。 If you want to convert an array of chars to an array of ints you might try std::copy
which copies containers element by element.如果要将字符数组转换为整数数组,您可以尝试
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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.