使用reinterpret_cast在char数组中的偏移量处转换二进制数据

时间:2014-02-12 22:57:07

标签: c++ binary memcpy reinterpret-cast

我找到了这篇文章:

Why is memcpy slower than a reinterpret_cast when parsing binary data?

其中有人使用reinterpret_cast将二进制数据转换为整数。但是(我猜)他们转换的数字是char *数组中的第0个元素。

如果我要转换的二进制数从char数组的开头偏移N个字节,我怎么能使用上面这个?

我希望将二进制数转换为尽可能少的CPU周期,因此我对reinterpret_cast以及上述SO问题感兴趣。

2 个答案:

答案 0 :(得分:2)

只需在字节数组地址中添加一个偏移量即可。 而不是x,强制转换x+123

但是:您是否已阅读问题的第一行(粗体编辑)?

  

TLDR:我忘了启用编译器优化。随着   优化使得性能(几乎)相同。

答案 1 :(得分:1)

如果您使用二进制数据初始化了*array;,那么您只需执行此操作:

for (int offset = 0; offset < sizeof (array); offset++)
{
    ... = *reinterpret_cast<const int*>(array + offset);
}