简体   繁体   English

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

[英]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调用是不正确的。


* Number of 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM