在Perl 6中转换为八进制和从八进制转换

Eug*_*sky 10 perl6

如果我们有一个八进制数,例如0o157,Perl 6可以将其转换为十进制:

> 0o157
111
Run Code Online (Sandbox Code Playgroud)

我们不允许以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>
Run Code Online (Sandbox Code Playgroud)

现在让我们进行从十进制到八进制的反向转换:

> printf "%#o\n", 111
0157
Run Code Online (Sandbox Code Playgroud)

现在的问题是:为什么不现在就在o之后0的八进制表示?

同时,如果我们转换为十六进制,那x将是:

> printf "%#x\n", 111
0x6f
Run Code Online (Sandbox Code Playgroud)

mor*_*itz 7

现在的问题是:为什么不现在就在o之后0的八进制表示?

(s)printf是一个非常普遍使用的函数,并直接移植到Perl 6.它旨在与其他语言的printf函数兼容,而不是与Perl 6输入语法兼容.

Perl 5的printf行为方式相同,因此可能直接复制其行为.