c++ - 您建议使用这两种将此数组转换为整数的方法中的哪一种?

标签 c++ arrays performance integer

考虑以下旨在转换为单个无符号整数的字节数组:

unsigned char arr[3] = {0x23, 0x45, 0x67};

每个字节代表整数中的等效字节,现在您会特别推荐以下哪种方法来提高性能:

unsigned int val1 = arr[2] << 16 | arr[1] << 8 | arr[0];
//or
unsigned int val2=arr[0];
*((char *)&val2+1)=arr[1];
*((char *)&val2+2)=arr[2];

最佳答案

我更喜欢第一种方法,因为它是可移植的。第二个不是由于 endianness问题。

关于c++ - 您建议使用这两种将此数组转换为整数的方法中的哪一种?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4112619/

相关文章:

c++ - 在 C++ 项目中使用 igraph

c++ - 与 lambdas 相比,std::bind 仍然有用吗?

arrays - 将 SUMPRODUCT 与 AND 和 OR 逻辑一起使用时遇到问题

javascript - 三.JS:根据不同的tilesets渲染大 map (Texture Atlas)

ruby-on-rails - ActiveRecord 对象数组上的 Ruby Array#sort_by 似乎很慢

c++ - 如果我 "slice"到一个抽象类会发生什么

c++ - 重载 std::bitset 的移位运算符

c - 使用循环在数组中生成唯一随机数

c++ - std::unique_ptr<std::array<T,N>> 有用例吗

java - 哪个 "if"构造更快 - 语句或三元运算符?