ruby – 当从文件中读取时,为什么在`to_i`之上需要`to_s`?

我从文件中读取了一个数字“98”,并尝试使用input.to_i(2)将其转换为二进制,但是我得到了0.

input=File.read("input.dat")
puts "Input is: #{input}"
puts "normal way is #{input.to_i(2)}"
puts "It works this way #{input.to_i.to_s(2)}"
puts "Calling the number directly works #{98.to_s(2)}"

输出是:

Input is: 98
normal way is 0
It works this way 1100010
Calling the number directly works 1100010

解决方法

to_i(2)将字符串中的表达式解释为二进制数,该二进制数应仅包含“0”和“1”.由于“98”无效,因此认情况下,设计结果为0. (它本来可以设计为返回nil或引发错误,但不知何故,它是以这种方式设计的.)

要将数字显示为二进制,您需要to_s(2)因为它以二进制形式给出数字的表达式.

作为一个数字,二进制数,十进制数等没有区别.所有都有一个数字.这些二进制,十进制等概念的含义是它们表示为字符串的方式.

相关文章

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