转换二进制为有符号整数/十进制
问题描述:
我想将十六进制数据转换为有符号整数/十进制,并不能找出我做错了什么。我需要FE
变为-2
。转换二进制为有符号整数/十进制
我使用的是Convert.ToInt32(fields[10], 16)
,但我得到254
而不是-2
。
任何援助将不胜感激。
答
int
是32个位宽,所以0xFE的真的被解释为0x000000FE用于Convert.ToInt32(string, int)
目的,这在int
空间等于254。由于你想使用带符号的字节范围值,所以使用Convert.ToSByte(string, int)
代替(默认情况下,byte
未签名,所以你需要sbyte
类型)。
Convert.ToSByte("FE",16)
+0
完美!非常感谢!!! – StarScr3am77
答
解释值作为一个符号字节:
sbyte value = Convert.ToSByte("FE", 16); //-2
答
嘛Int32
的边界是-2 147 483 648到2 147 483 647所以FE
比赛254
如果你想在128左右做一次总结,最优雅的解决方案是proably到使用符号字节(sbyte
):为什么要打开`FE`成`-2`,而不是`254`
csharp> Convert.ToSByte("FE",16);
-2
你能否解释一下?你怎么知道是Y你需要得到'-2'而不是'254'? –
我正在与之合作的那个人想要看到一个签名的值,不知道为什么,但这就是要求。虽然这是可能的。此链接在JavaScript中执行。 http://www.free-test-online.com/binary/signed_converter.html – StarScr3am77
这不是一个有符号整数的小数 - 如果你想以这种方式读取它,它是一个有符号的字节。 –