我有一个uint64变量...但我想传递它的函数只接受uint32.
我尝试使用static unsigned int ToUInt32(uint64 variable); 引用MSDN,但它给出了精度丢失的错误.
有没有办法将uint64转换为uint32而不丢失任何数据?
不能.你不能将2加仑的水装入一加仑的容器中,而且你不能将64位数据装入32位值.
好好想想你想要做什么.你正在拿一个可能需要64位然后减半的数字.当然,在这种情况下你会丢失数据.
如果你确定给出的数字不会大于uint32那么你可以试试这个
uint64 largeNumber = 9876543210;
uint32 smallNumber = largeNumber & 0xFFFFFFFF;
Run Code Online (Sandbox Code Playgroud)
但如果它超过32位,这将失去你的一半数量.