【发布时间】:2016-12-07 22:31:02
【问题描述】:
所以我有一个 integer 数字 208 我不希望很多人理解 为什么我这样做,但我正在尝试的最终结果要做的是获取八进制数 208(二零八)的 base-10 表示。我希望令人困惑的事情(对于那些试图回答这个问题的人来说)是,虽然 208 是一个整数,但我使用它更像是一个包含字符 2、0 和 8 的字符串。 如果对此还有任何问题,请告诉我,因为我认为这会引起一些混乱。
无论如何,要获得“208”的 base-10 表示,我就是这样做的:
- 将
int208 转换为string“208”。 - 取
string“208”,并从八进制解析为十进制。
那么,下面是对应的源码:
public byte OctalToDecimal(int octalDigits)
{
byte decimalValue = 0;
string octalString = string.Empty;
// first, get a string representation of the integer number
octalString = octalDigits.ToString();
// now, get the decimal value of the octal string
decimalValue = Convert.ToByte(octalString, 8);
// set the decimal-value as the label
return decimalValue;
}
octalDigits = 208 时出现格式异常。我收到一条消息,称octalString 的值中有其他字符。为什么会这样?我所做的就是从int 转换为string,它非常短/简单,不像我在上面附加任何东西。怎么回事?
【问题讨论】:
-
那是因为
8不是八进制数的无效数字。八进制符号范围从0到7! -
208 不是一个有效的八进制数。您不能在八进制数中包含数字 8。在任何情况下,
int都会存储实际值。谈论基础和表示是没有意义的——没有。尝试将实际值格式化为字符串时,Base-10 或 8 有意义。 -
我怀疑这是XY problem 的情况——你有一个问题X,认为Y 是解决方案,所以当你遇到麻烦时你问Y。您的实际问题是什么?
-
@PanagiotisKanavos 完全同意。谢谢。
-
虽然,当异常消息谈到有多余的字符时......好吧,我认为这有点误导我。但我也不得不羞耻地承认我不知道八进制数以 7 结尾。