【发布时间】:2018-12-11 12:08:29
【问题描述】:
代码的目的是将两个字节组合成ushort。所有变量都是 ushort 类型,但 M_hi 和 M_lo 加载了一个字节。我最初只是把它们当作字节,但是发生了这个错误,所以我尝试了 ushort 第一部分屏蔽了更高的字节。我最初尝试使用它来防止此错误,因为我认为编译器认为它可能会溢出。虽然它没有解决它,但我决定暂时保留它。然后乘以 0x100,有效地将其移动到高字节的位置。最后加上第二个值作为低字节。
cv.M = ((cv.M_hi & 0x00FF) * 0x100) + cv.M_lo;
这些值是从一个字节数组中读取的,该数组以小端序存储数据,所以我需要做这样的事情来组合它们以使用 ushort 值(不,我不能将整个数组转换为大端序) .
无论哪种方式,我都知道我正在使用的算法应该可以工作,但是有些东西会阻止它按原样工作。有没有其他方法可以做到这一点?我也试过检查 ToInt16 方法,但 Unity 似乎没有。
【问题讨论】:
-
您是否尝试过将您的算法分解为每行代码的单个操作,以查看哪个转换为 int?
-
BitConverter.ToUInt16(....) ?
-
如何将 M_hi 和 M_lo 显式转换为 ushort?示例:(ushort)cv.M_hi.
-
问题是当你乘以 0x100 时,结果是一个整数,然后你必须转换:(ushort)((cv.M_hi