Ruby将int转换为bin,反之亦然

Ker*_*ozu -2 ruby

我遇到了一些我无法理解的问题.你能解释一下为什么在将int 127转换为二进制时我得到1111111的结果应该是'01111111'吗?

现在我正在尝试女巫,to_s(2)就像在这个例子中:

127.to_s(2)
Result: '1111111'
Run Code Online (Sandbox Code Playgroud)

提前致谢!

ike*_*ami 5

1111111 2 = 01111111 2 = 001111111 2 = 127 10 = 0127 10 = 00127 10

它应该不01111111应该是127 0127.您可以根据需要添加任意数量的前导零,但绝对没有义务或固有的理由.

1111111 2 = 1*2 7 + 1*2 6 + ... = 127
01111111 2 = 0*2 8 + 1*2 7 + 1*2 6 + ... = 127


如果你问如何01111111从127 生产,快速搜索显示以下两个解决方案:

  • "%08b" % 127
  • sprintf("%08b", 127)

(我不知道红宝石.)


Ste*_*fan 5

你可以使用sprintf:

sprintf("%08b", 127) #=> "01111111"
#         ^^^
#         |||
#         ||+- "b" = format argument as binary number
#         |+-- "8" = number of digits
#         +--- "0" = pad with 0
Run Code Online (Sandbox Code Playgroud)

  • 你必须指定*digits*的数量,而不是字节,即`"%032b"` (3认同)