繁体   English   中英

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

[英]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), lengthint

你在找 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比这慢得多,因为它使用循环逐字节复制。
在整数的情况下,这只是一个简单的赋值。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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