7

我正在为机器人控制器编写数据日志解析器,来自数据日志的数据是 0 - 65535 范围内的数字(如果我没记错的话,这是一个 16 位无符号整数)。我正在尝试将其转换为有符号的 16 位整数以显示给用户(因为这是记录器更改之前的实际数据类型)。

有人可以帮帮我吗?

例子:

值应该是什么 (0, -1, -2, -3, -4)

值是多少 (0, 65535, 65534, 65533, 65532)

4

3 回答 3

13

您是否尝试过显式转换?

UInt16 x = 65535;
var y = (Int16)x; // y = -1
于 2010-01-31T04:52:51.250 回答
1

如果打开,则在此处使用unchecked可避免崩溃[X] Check for Arithmetic Overflow

UInt16 x = 65535;
Int16 y = unchecked((Int16)x);
于 2021-05-03T13:48:00.097 回答
-3

或者像这样

或者像这样

只需检查是否UI16>32767I16=UI16-65536,否则=UI16

于 2021-05-03T09:45:54.673 回答