C#学习教程:如何将hex字符串转换为有符号整数?分享


如何将hex字符串转换为有符号整数?

我得到一个hex字符串,需要转换为带符号的8位整数。 目前我正在使用Int16 / Int32进行转换,这显然不会给出8位整数的负值。 如果我在hex中得到值255,我如何将其转换为-1十进制? 我假设我想使用sbyte,但我不确定如何正确地获得该值。

您可以使用Convert.ToSByte

例如:

 string x = "aa"; sbyte v = Convert.ToSByte(x, 16); // result: v = 0xAA or -86 

你也可以使用sbyte.Parse

例如:

 string y = "bb"; sbyte w = sbyte.Parse(y, System.Globalization.NumberStyles.HexNumber); // result: w = 0xBB or -69 

要回答有关Int16的高字节或低字节的问题:

 string signed_short = "feff"; // Truncate 16 bit value down to 8 bit sbyte b1 = (sbyte)Convert.ToInt16(signed_short, 16); sbyte b2 = (sbyte)short.Parse(signed_short, System.Globalization.NumberStyles.HexNumber); // result: b1 = 0xFF or -1 // result: b2 = 0xFF or -1 // Use upper 8 bit of 16 bit sbyte b3 = (sbyte)(Convert.ToInt16(signed_short, 16) >> 8); sbyte b4 = (sbyte)(short.Parse(signed_short, System.Globalization.NumberStyles.HexNumber) >> 8); // result: b3 = 0xFE or -2 // result: b4 = 0xFE or -2 

您需要执行unchecked ,如下所示:

 sbyte negativeOne = unchecked((sbyte)255); 

我的解决方案是将第一个取16位整数的前8位并将它们存储在sbyte中。

上述就是C#学习教程:如何将hex字符串转换为有符号整数?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—猴子技术宅(www.ssfiction.com)

本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ssfiction.com/ckf/1031562.html

发表评论

邮箱地址不会被公开。 必填项已用*标注