【问题标题】:How to Convert String to Binary in Ruby [duplicate]如何在Ruby中将字符串转换为二进制[重复]
【发布时间】:2014-11-10 02:15:56
【问题描述】:

我有一个字符串“10010”,我假设字符串本身是一个二进制数。我怎样才能将字符串“10010”转换为像 0b10010 这样的二进制?

【问题讨论】:

  • 请定义 "something like 0b10010",你想把它转换成18 还是在字符串前面加上"0b"
  • @Stefan 我想将该字符串转换为二进制数,而不是使用 to_i(2) 导致十进制等价,这就是为什么我输入为 0b10010
  • 不对,数字都是二进制存储的。没有“十进制等价物”这样的东西。请参阅@sawa 的回答。
  • @bhanua1 为什么你需要一个“二进制数”,你想做什么?
  • @Stefan 我想对两个二进制数执行异或运算,这两个二进制数实际上是作为字符串的用户输入,顺便说一下,如果你知道,请告诉我如何使用正则表达式验证用户输入。我尝试了类似 input_str == /[(0|1)]+/

标签: ruby string binary


【解决方案1】:

您可以将基数传递给to_i 方法:

"10010".to_i(2) #=> 18

请注意,数字在内部存储为二进制。如果要生成指定的输出,可以使用sprintf 将其转换回字符串:

sprintf("%#b", 18) #=> "0b10010"

但如果您不关心前导“0b”,那么您也可以将基数传递给to_s 方法:

18.to_s(2) #=> "10010"

【讨论】:

  • 很好的答案和解释。 :-)
【解决方案2】:

Ruby 对象中没有“十进制数”或“二进制数”的概念。一切都是数字(实际上所有数字在低级别都是二进制的,在更高级别不一定是二进制,但这与 Ruby 对象无关)。 “十进制”或“二进制”只是表示数字的一些方式。因此,您不能将某些东西转换为“二进制数”。您所能做的就是将其转换为数字。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-08
    • 1970-01-01
    • 2022-01-13
    • 2013-01-16
    • 2018-06-05
    • 2012-07-20
    • 2013-10-29
    • 1970-01-01
    相关资源
    最近更新 更多