我找到了这篇文章:
Why is memcpy slower than a reinterpret_cast when parsing binary data?
其中有人使用reinterpret_cast将二进制数据转换为整数。但是(我猜)他们转换的数字是char *数组中的第0个元素。
如果我要转换的二进制数从char数组的开头偏移N个字节,我怎么能使用上面这个?
我希望将二进制数转换为尽可能少的CPU周期,因此我对reinterpret_cast
以及上述SO问题感兴趣。
答案 0 :(得分:2)
只需在字节数组地址中添加一个偏移量即可。
而不是x
,强制转换x+123
但是:您是否已阅读问题的第一行(粗体编辑)?
TLDR:我忘了启用编译器优化。随着 优化使得性能(几乎)相同。
答案 1 :(得分:1)
如果您使用二进制数据初始化了*array;
,那么您只需执行此操作:
for (int offset = 0; offset < sizeof (array); offset++)
{
... = *reinterpret_cast<const int*>(array + offset);
}