C#中的八进制等价值

61

在C语言中,可以通过在数字前添加0来表示八进制数,例如:

 int i = 012; // Equals 10 in decimal.

我发现在C#中使用十六进制时需要在数字前加上0x

 int i = 0xA; // Equals 10 in decimal.

现在我的问题是:在C#中是否有八进制数字的等价物来表示任何值?


3
@RenniePet: 0o会很好。 - Joshua
这里有一些关于软件工程SE的内容可能会引起您的兴趣,可以解释“为什么”:https://softwareengineering.stackexchange.com/a/98733 - General Grievance
5个回答

62

不,C#中没有八进制数字字面量。

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


38
没有,语言规范(ECMA-334)非常明确。第4版,第72页

9.4.4.2 整数字面量

整数字面量用于编写 int、uint、long 和 ulong 类型的值。整数字面量有两种可能的形式:十进制和十六进制。

没有八进制形式。


17
更新:C# 7及以上版本现在也支持_binary_字面量,例如 0b10 表示十进制的 2 - mklement0
@mklement0 奇怪。目前的第6版规范(第6.4.5.3节整数字面量)根本没有提到这一点。 - General Grievance
1
@GeneralGrievance,确实很奇怪,但我不知道_spec_和Microsoft的_implementation_之间的确切关系是什么。二进制整数字面量在C#文档中有描述,即此处 - mklement0
1
@mklement0 啊,我刚刚发现了微软自己的7.0规范在这里,并且“整数字面量”的链接确实提到了二进制(当然没有八进制)。 - General Grievance

24

不,C#中没有八进制字面量。

如果必要,可以通过将字符串和基数传递给Convert.ToInt32来实现,但这显然远不如字面量方便:

int i = Convert.ToInt32("12", 8);

9

在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.

微软开发者网络


3

您不能使用字面量,但是您可以解析八进制数:Convert.ToInt32("12", 8)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接