c++ - 警告:在 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 浮点数据类型)?
谢谢你的帮助!
解决方案
我为自己找到了解决方案 - 但感谢所有评论!
我试过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);
推荐阅读
- tensorflow - 使用 Tensorflow 对象检测 API 在 Faster R-CNN 中可视化来自 RPN 头部的提议区域
- onvif - Onvif TranslationSpaceFov 平移空间是否需要通过转换 x,y 坐标来使相机视图居中
- javascript - PowerBI JS SDK - setFilters() 从过滤器面板中删除除第一个过滤器之外的所有过滤器
- node.js - 将 system.profile 与猫鼬一起使用
- c# - Xamarin UWP + Android ContentPage 导航 PushAsync
- list - 带有小部件列表的 Flutter 动画切换器
- java - 您如何与 Android Studio 中的第三方通知进行交互?
- javascript - 在移相器 3 中绘制移动线
- flutter - 我可以在不打开 Flutter 应用的情况下收到分享意图吗?
- gcc - 在 CMake 中启用 UB 清理的惯用方式是什么?