在 C# 中将无符号 16 位 int 转换为有符号 16 位 int
我正在为机器人控制器编写一个数据日志解析器,从数据日志中输入的是 0 - 65535 范围内的数字(如果我没有记错的话,这是一个 16 位无符号整数)。我正在尝试将其转换为带符号的 16 位整数以显示给用户(因为这是记录器更改之前的实际数据类型)。
有人可以帮我吗?
示例:
值应该是什么 (0, -1, -2, -3, -4)
值是什么 (0、65535、65534、65533、65532)
I'm writing a datalog parser for a robot controller, and what's coming in from the data log is a number in the range of 0 - 65535 (which is a 16 bit unsigned integer if I'm not mistaken). I'm trying to convert that to a signed 16 bit integer to display to the user (since that was the actual datatype before the logger changed it).
Can someone give me a hand?
Example:
What the values should be
(0, -1, -2, -3, -4)
What the values are
(0, 65535, 65534, 65533, 65532)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您尝试过显式强制转换吗?
Have you tried explicit casting?
如果启用了
[X]检查算术溢出
,则在此处使用unchecked
可以避免崩溃:Using
unchecked
here avoids a crash if[X] Check for Arithmetic Overflow
is on:或者像这样
只需检查是否
UI16>32767
如果是,I16=UI16-65536
,否则=UI16
Or like this
Just check if
UI16>32767
if yes,I16=UI16-65536
, otherwise =UI16