将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
。
答案 0 :(得分:6)
您在寻找memcpy
吗?char x[20];
int a;
memcpy(&a,x,sizeof(int));
您的解决方案也很好,因为 endian safe 。
旁注: -
虽然没有sizeof(int)==4
对任何特定实现的保证。
答案 1 :(得分:3)
只需使用reinterpert强制转换。使用数据数组就好像它是一个int指针。
char data[sizeof(int)];
*reinterpret_cast<int*>(data) = length;
BTW memcpy比这慢得多,因为它使用循环逐字节复制 在整数的情况下,这只是一个直接的分配。
答案 2 :(得分:0)
这是唯一的方法。从理论上讲,您可以使用memcpy
或reinterpret_cast
,但由于endians的问题而无法使用。