微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在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"

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐