Преобразование в и из восьмеричного в Perl 6
Если у нас есть восьмеричное число, например. 0o157
, Perl 6 может преобразовать его в десятичную:
> 0o157
111
Нам не разрешено удалять этот o
в его восьмеричном представлении:
> 0157
Potential difficulties:
Leading 0 has no meaning. If you meant to create an octal number, use '0o' prefix; like, '0o157'. If you meant to create a string, please add quotation marks.
------> 0157⏏<EOL>
Теперь сделаем обратное преобразование из десятичной в восьмеричное:
> printf "%#o\n", 111
0157
Возникает вопрос: почему нет o
после 0
в восьмеричном представлении?
Между тем, если мы перейдем к шестнадцатеричному, будет x
:
> printf "%#x\n", 111
0x6f
Ответы
Ответ 1
Возникает вопрос: почему в восьмеричном представлении нет o
после 0
?
(s) printf является довольно универсальной функцией и портируется непосредственно на Perl 6. Она предназначена для совместимости с функциями других языков printf
больше, чем с входным синтаксисом Perl 6.
Perl 5 printf
ведет себя одинаково, поэтому его поведение, вероятно, было скопировано напрямую.