54

In C language octal number can be written by placing 0 before number e.g.

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

I found the equivalent of hexadecimal in C# by placing 0x before number e.g.

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

Now my question is: Is there any equivalent of octal number in C# to represent any value as octal?

Kirill Kobelev
  • 9,986
  • 6
  • 27
  • 48
Javed Akram
  • 14,674
  • 24
  • 78
  • 117

5 Answers5

56

No, there are no octal number literals in C#.

For strings: Convert.ToInt32("12", 8) returns 10.

ulrichb
  • 19,054
  • 7
  • 71
  • 87
33

No there isn't, the language specification (ECMA-334) is quite specific.

4th edition, page 72

9.4.4.2 Integer literals

Integer literals are used to write values of types int, uint, long, and ulong. Integer literals have two possible forms: decimal and hexadecimal.

No octal form.

Julien Roncaglia
  • 16,859
  • 3
  • 57
  • 74
21

No, there are no octal literals in C#.

If necessary, you could pass a string and a base to Convert.ToInt32, but it's obviously nowhere near as nice as a literal:

int i = Convert.ToInt32("12", 8);
LukeH
  • 252,910
  • 55
  • 358
  • 405
9

No, there are no octal numbers in C#.

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

MSDN

abatishchev
  • 95,331
  • 80
  • 293
  • 426
2

You can't use literals, but you can parse an octal number: Convert.ToInt32("12", 8).

Mike Dour
  • 3,516
  • 2
  • 21
  • 24