一些终端输出值得一千字,所以让我们开始:
[10] pry(main)> 1_000
=> 1000
Run Code Online (Sandbox Code Playgroud)
是的,我们可以用红宝石中的可读方式定义数千个,我知道这一切都很好.嘿,我想知道如果我尝试用零填充垫会发生什么?
[9] pry(main)> 001_000
=> 512
Run Code Online (Sandbox Code Playgroud)
嗯,这很奇怪,它不是二进制,因为那将是8小时......
[20] pry(main)> 01_0
=> 8
Run Code Online (Sandbox Code Playgroud)
所以那是8 ...好吧,2**3是8,2**(3*3)是512我打赌01_00是2**6 == 64
[24] pry(main)> 01_00
=> 64
Run Code Online (Sandbox Code Playgroud)
嗯......数字语法中的下划线没有什么特别之处,只是为了让它看起来不错:
[23] pry(main)> 0100
=> 64
Run Code Online (Sandbox Code Playgroud)
那么这些数字被称为什么(它不是直接的二进制......我正在考虑它们应该是什么,但不断提出一个空白).另外为什么它们如此重要?任何人都可以发布描述它们的文档的链接吗?
如果数字带有前缀0,则为八进制表示.
同样,如果数字以0xor 为前缀,则为0X十六进制表示.
0x10
# => 16
0x100
# => 256
Run Code Online (Sandbox Code Playgroud)
顺便说一下,您可以使用%运算符将数字转换为八进制,十六进制,二进制表示,或者sprintf:
'%o' % 512
=> "1000"
'%x' % 256
# => "100"
'%x' % 512
# => "200"
'%b' % 3
# => "11"
Run Code Online (Sandbox Code Playgroud)