将int转换为char数组的最佳方法

时间:2013-10-21 14:48:31

标签: c++ arrays type-conversion

int放入char数组的最佳方法(性能)是什么? 这是我目前的代码:

data[0] = length & 0xff;
data[1] = (length >> 8)  & 0xff;
data[2] = (length >> 16) & 0xff;
data[3] = (length >> 24) & 0xff;

datachar数组(共享ptr),lengthint

3 个答案:

答案 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)

这是唯一的方法。从理论上讲,您可以使用memcpyreinterpret_cast,但由于endians的问题而无法使用。