gpt4 book ai didi

c++ - Bitshifting long int 返回错误的数据

转载 作者:行者123 更新时间:2023-11-28 04:53:48 26 4
gpt4 key购买 nike

我试图从函数返回两个 32 位 int 值(_mouseX 和 _mouseY),方法是先将它们打包成 64 位值,然后在我使用它们时在代码的其他地方解包它们。但是,当我通过这个函数获取数据时,数据完全不正确。我已经确认原始的 _mouseX 和 _mouseY 数据以及 SetOrientation 函数没问题;问题出在我在此 GetMouseXY 函数中使用的位移位或转换或类型中的某个地方。你能看看吗?谢谢。

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 位类型。

两个注意事项:首先,使用std::uint64_t ,如果您需要 64 位类型。第二:你为什么不为此使用结构?喜欢

struct MouseCoord {
uint32_t x, y;
};

MouseCoord Input::GetMouseXY();

可以更清楚地看到发生了什么。

关于c++ - Bitshifting long int 返回错误的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47607946/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com