Sus*_*tte 1 c# unity-game-engine
代码的目的是将两个字节组合到ushort.所有变量都是ushort类型,但M_hi和M_lo都加载了一个字节.我最初只将它们作为字节,但是这个错误发生了,所以我尝试了ushort而不是第一部分掩盖了更高的字节.我最初尝试使用它来防止此错误,因为我认为编译器认为它可能会溢出.虽然它没有解决它,但我决定暂时保留它.然后它乘以0x100,有效地将其移动到较高字节的位置.最后将第二个值添加为低字节.
cv.M = ((cv.M_hi & 0x00FF) * 0x100) + cv.M_lo;
Run Code Online (Sandbox Code Playgroud)
这些值是从一个以小端存储数据的字节数组中读取的,所以我需要做这样的事情来组合它们以使用ushort值(不,我不能将整个数组转换为big-endian).
无论哪种方式,我知道我正在使用的算法应该可以工作,但是有一些东西会阻止它按原样工作.有没有其他方法可以做到这一点?我也试过检查ToInt16方法,但Unity似乎没有.
根据https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/ushort#conversions,当添加两个类型为ushort的变量时,结果为int.这意味着实际的类型((cv.M_hi & 0x00FF) * 0x100) + cv.M_lo;是int.
这可以通过显式强制转换轻松修复:
cv.M =(ushort)(((cv.M_hi&0x00FF)*0x100)+ cv.M_lo);
| 归档时间: |
|
| 查看次数: |
156 次 |
| 最近记录: |