我得到了例外:
输入字符串的格式不正确。
在运行时为以下代码片段。
string str= "0x1A";
sbyte value= Convert.ToSByte(str);
任何人都可以帮忙解决这个问题吗?
答案 0 :(得分:6)
Convert.ToSByte
使用参数int fromBase
来指定您要转换的基数
在您的情况下,您必须执行以下操作:
sbyte s = Convert.ToSByte(str, 16); // s == 26
您可以在此Wikipedia article中阅读有关不同基础(也称为基数)的更多信息。
答案 1 :(得分:3)
如果您在例外部分的documentation of ToSByte下查找,则会找到引发此异常的条件:
值不包含可选符号后跟数字序列(0到9)。
您的值以十六进制格式写入,意思是16的基数。输入字符串不仅包含“数字(0到9)”。为此,您将需要此方法的另一个重载,您可以在其中指定此方法。
如果你看一下Convert.ToSByte Method (String, Int32)的重载,你可以看到它:
将指定基数中数字的字符串表示形式转换为等效的8位有符号整数。
第二个参数是:
fromBase
类型:System.Int32
值的基数,必须为2,8,10或16。
因此,指定基数将使您退出异常:
string str = "0x1A";
sbyte value = Convert.ToSByte(str, 16);