C#中的八进制等效

Jav*_*ram 45 .net c# numbers

在C语言中,可以通过00在数字之前放置来编写八进制数

编者注:它是一个单一的前导0,它将数字文字标识为C中的八进制值; 其他0实例无效.

 int i=0012; //equals 10 in decimal
Run Code Online (Sandbox Code Playgroud)

我在C#中找到了相当于Hexadecimal的0x数字,例如放在数字之前

 int i=0xA; //equals 10 in decimal
Run Code Online (Sandbox Code Playgroud)

现在我的问题是: C中的八进制数是否与C中的相同,以表示任何数字为八进制数?

ulr*_*chb 42

不,C#中没有八进制数字文字.

对于字符串:Convert.ToInt32("12", 8)返回10.


Jul*_*lia 26

不,没有,语言规范(ECMA-334)非常具体.

第4版,第72页

9.4.4.2整数文字

整数文字用于写入int,uint,long和ulong类型的值.整数文字有两种可能的形式:十进制和十六进制.

没有八进制形式.

  • 更新:C#7及更高版本现在还支持_binary_文字,例如,“ 0b10”代表十进制“ 2”。 (5认同)

Luk*_*keH 18

不,C#中没有八进制文字.

如果有必要,你可以传递一个字符串和一个基数Convert.ToInt32,但它显然远不如文字那么好:

int i = Convert.ToInt32("12", 8);
Run Code Online (Sandbox Code Playgroud)

  • 八进制文字 - 很好吗?C的方式,他们是混乱和错误的常见来源.事实上,我刚刚在一秒钟之前提交了C#代码,出于可以防范的原因,我格式化了诸如`001`,`002`等数字,当我回想起那可能意味着*八进制*.这就是为什么我在这里,我很高兴它没有,在C#中.(虽然有人可能会争辩说,现在C家伙会感到困惑,并在C#中写错误,假设他们的行为意味着八进制......) (13认同)
  • @EugeneBeresovksy:首次创建C时,八进制常量非常重要.如果他们为八进制常量选择不同的表示而不是前导0会不会很好:-)我出于同样的原因而且也很高兴C#没有八进制常量. (8认同)

aba*_*hev 5

不,C#中没有八进制数字.

使用 public static int ToInt32(string value, int fromBase);

fromBase
Type: System.Int32
The base of the number in value, which must be 2, 8, 10, or 16.
Run Code Online (Sandbox Code Playgroud)

MSDN