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