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

Optimal way to convert an int into a char array

本文关键字:最佳 方法 数组 char int 转换      更新时间:2023-10-16

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

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

data 是一个char数组(共享 PTR),lengthint

你在寻找memcpy

char x[20];
int a;
memcpy(&a,x,sizeof(int));

您的解决方案也很好,因为它是字节序安全的

附带说明:-

尽管没有这样的保证sizeof(int)==4任何特定的实现。

只需使用 reinterpret_cast .像使用 int 指针一样使用数据数组。

    char data[sizeof(int)];
    *reinterpret_cast<int*>(data) = length;

顺便说一句,memcpy比这慢得多,因为它使用循环逐字节复制。
在整数的情况下,这只是一个简单的赋值。

这是

唯一的方法。从理论上讲,您可以使用memcpyreinterpret_cast但由于字节序的问题,您不能使用。