首页 > 解决方案 > 警告:在 C++ 中将字节流读入双变量时,左移计数 >= 类型宽度

问题描述

我正在尝试将字节流读入 C++ 中的双变量。所以我的代码如下:

double foo;
foo = bytes[0] | (bytes[1] << 8) | (bytes[2] << 16) | (bytes[3] << 24) | (bytes[44] << 32) | (bytes[5] << 40) | (bytes[6] << 48) | (bytes[7] << 56);

如您所见,我正在尝试以 64 位读取。即使 double 不是固定大小,它在几乎任何机器上都应该是 64 位。(sizeof(double)给我 8 个字节的大小)

但我仍然收到这个警告:

警告:左移计数 >= 类型宽度

我可以忽略该警告 - 还是我可以以某种方式固定双精度的大小(因为我知道 C/C++ 中没有 sizefixed 浮点数据类型)?

谢谢你的帮助!

标签: c++bytebit-shift

解决方案


我为自己找到了解决方案 - 但感谢所有评论!

我试过memcpy()了,效果很好。

我是这样解决的:

foo = bytes[0] | (bytes[1] << 8) | (bytes[2] << 16) | (bytes[3] << 24) | ((uint64_t)bytes[44] << 32) | ((uint64_t)bytes[5] << 40) | ((uint64_t)bytes[6] << 48) | ((uint64_t)bytes[7] << 56);

推荐阅读