web-dev-qa-db-fra.com

Equivalent octal en C #

En langage C, le nombre octal peut être écrit en plaçant 0 avant le numéro, par exemple.

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

J'ai trouvé l'équivalent d'hexadécimal en C # en plaçant 0x avant le numéro, par exemple.

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

Maintenant, ma question est: Y a-t-il un équivalent de nombre octal en C # pour représenter une valeur octale?

46
Javed Akram

Non, il n'y a pas de littéraux de nombre octal en C #.

Pour les chaînes: Convert.ToInt32("12", 8) renvoie 10.

41
ulrichb

Non, il n'y a pas, la spécification de langue (ECMA-334) est assez spécifique.

4e édition, page 72

9.4.4.2 Littéraux entiers

Les littéraux entiers sont utilisés pour écrire des valeurs de types int, uint, long et ulong. Les littéraux entiers ont deux formes possibles: décimal et hexadécimal.

Pas de forme octale.

26
Julien Roncaglia

Non, il n'y a pas de littéraux octaux en C #.

Si nécessaire, vous pouvez passer une chaîne et une base à Convert.ToInt32 , mais c'est évidemment loin d'être aussi agréable que littéral:

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

Non, il n'y a pas de nombre octal en C #.

Utilisez 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

5
abatishchev

Vous ne pouvez pas utiliser de littéraux, mais vous pouvez analyser un nombre octal: Convert.ToInt32("12", 8).

0
Mike Dour