[英]Optimal way to convert an int into a char array
将int
放入char
数组的最佳方法(性能)是什么? 这是我当前的代码:
data[0] = length & 0xff;
data[1] = (length >> 8) & 0xff;
data[2] = (length >> 16) & 0xff;
data[3] = (length >> 24) & 0xff;
data
是一个char
数组(共享 ptr), length
是int
。
你在找 memcpy
char x[20];
int a;
memcpy(&a,x,sizeof(int));
您的解决方案也很好,因为它是endian safe 。
附注:-
尽管对于任何特定实现都没有这样的保证sizeof(int)==4
。
只需使用reinterpret_cast
。 像使用 int 指针一样使用数据数组。
char data[sizeof(int)];
*reinterpret_cast<int*>(data) = length;
顺便说一句, memcpy
比这慢得多,因为它使用循环逐字节复制。
在整数的情况下,这只是一个简单的赋值。
这是唯一的方法。 从理论上讲,您可以使用memcpy
或reinterpret_cast
但由于endians 的问题,您不能使用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.