在ruby中定义二进制数的语法是什么?

一些终端输出值得一千字,所以让我们开始:

[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

顺便说一句,您可以使用% operatorsprintf将数字转换为八进制,十六进制,二进制表示:

'%o' % 512
=> "1000"

'%x' % 256
# => "100"

'%x' % 512
# => "200"

'%b' % 3
# => "11"

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...