Prefixing
Like Base16 there are prefixing conventions to make it clear that a number is written in Base8 rather than Base10. However, there doesn’t seem to be a standardized prefix.
Wikipedia says:
In programming languages, octal literals are typically identified with a variety of prefixes, including the digit
0
, the letterso
orq
, the digit–letter combination0o
, or the symbol&
or$
. In Motorola convention, octal numbers are prefixed with@
, whereas a small (or capital[13]) lettero
[13] orq
[13] is added as a postfix following the Intel convention.[14][15] In Concurrent DOS, Multiuser DOS and REAL/32 as well as in DOS Plus and DR-DOS various environment variables like $CLS, $ON, $OFF, $HEADER or $FOOTER support an\nnn
octal number notation,[16][17][18] and DR-DOS DEBUG utilizes\
to prefix octal numbers as well.For example, the literal 73 (base 8) might be represented as
073
,o73
,q73
,0o73
,\73
,@73
,&73
,$73
or73o
in various languages.Newer languages have been abandoning the prefix
0
, as decimal numbers are often represented with leading zeroes. The prefixq
was introduced to avoid the prefixo
being mistaken for a zero, while the prefix0o
was introduced to avoid starting a numerical literal with an alphabetic character (likeo
orq
), since these might cause the literal to be confused with a variable name. The prefix0o
also follows the model set by the prefix0x
used for hexadecimal literals in the C language; it is supported by Haskell,[19] OCaml,[20] Python as of version 3.0,[21] Raku,[22] Ruby,[23] Tcl as of version 9,[24] PHP as of version 8.1,[25] Rust[26] and ECMAScript as of ECMAScript 6[27] (the prefix0
originally stood for base 8 in JavaScript but could cause confusion,[28] therefore it has been discouraged in ECMAScript 3 and dropped in ECMAScript 5[29]).