长时间返回错误的数据
Bitshifting long int returns wrong data
我正在尝试通过将它们包装到64位值中,然后在我使用时在其他位置将它们解开,从而从函数中返回两个32位int value(_mousex和_mousey)。他们。但是,当我通过此功能获取数据时,数据完全不正确。我已经确认原始_ MOUSEX和_ MOUSEY数据以及设置方向功能都可以。问题在bitshifting中的某个位置,或者可能是在此GetMouseXy函数中使用的铸造或Teh类型。你能看看吗?谢谢。
long int Input::GetMouseXY()
{
return (_mouseX << 32) |_mouseY;
}
long int mouseY = pInput->GetMouseXY() & 0xFFFFFFFF;
long int mouseX = (pInput->GetMouseXY() >> 32) & 0xFFFFFFFF;
_CamPosition->SetOrientation(XMFLOAT3((float)mouseY, (float)mouseX, 0.f));
使用(long int)_mouseX<<32|_mouseY
,因为您需要在32移动之前施放64位类型。
两个注释:首先,如果需要64位类型,请使用std::uint64_t
。第二:为什么不使用结构?喜欢
struct MouseCoord {
uint32_t x, y;
};
MouseCoord Input::GetMouseXY();
看到正在发生的事情要清楚得多。
相关文章:
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 尝试通过OCI例程从Oracle获取blob数据,但出现错误:ORA-01008:并非所有变量都绑定
- 使用 char* 存储数据和产生的错误
- Static_cast转换为错误的数据类型,但结果仍然正确?
- 创建服务失败0x6f7存根收到错误数据
- 通过 host() 从 af::array 检索数据会导致错误的数据
- OpenCV C++ 3 维垫数据访问错误值
- 错误: 无效使用非静态数据成员"应用程序::应用程序构造函数"
- 错误 - 自定义数据类型作为有效负载,带有提升::几何
- 类方法 - 数据结构中 For 循环的运行时错误
- 从文件中读取的数据,但发生核心转储错误
- 如果在 C++ 构造函数中以错误的顺序初始化对象数据,会发生什么类型的错误
- 删除使数据处于"错误状态"的默认构造函数的模式?
- 服务器客户端通过原始数据错误C 发送接收结构
- 对象无法访问其私人数据.错误:在这种情况下私有
- SVM训练数据错误
- 库单元测试的覆盖率数据错误
- Unix套接字发送接收客户端到服务器大块数据错误
- 无法通过windows UDP套接字发送数据:错误代码10035
- 着色器存储缓冲区发送的数据错误