为什么二进制到十进制的转换涉及数字'8'?

问题描述 投票:0回答:1

我正在寻找针对Coderbyte的以下编码挑战的解决方案:

使用Ruby语言,让函数BinaryReversal(str)传递str参数,这将是一个正整数,取其二进制表示,反转该位串,然后最后以十进制形式返回新的反转字符串。例如:如果str"47",那么这个整数的二进制版本是00101111。你的程序应该反转这个二进制字符串,然后变成:11110100然后最后返回这个字符串的十进制版本,即244

解决方案是:

def BinaryReversal(str, dig = 8)
  binary = str.to_i.to_s(2).reverse
  dig += 8 until dig >= binary.length
  binary += '0' until binary.length == dig
  binary.to_i(2)
end

我不明白为什么二进制文件需要添加0s,直到它的长度等于dig。事实上,我根本不了解dig的作用。

ruby binary byte binaries
1个回答
1
投票

当str为“47”时,二进制将被指定为“111101”。

  binary = str.to_i.to_s(2).reverse

通常,您将二进制值表示为8个字符或8位。此时,您不能简单地将二进制字符串转换回整数。 “111101”是二进制的61。

相反,你需要用“0”填充“111101”,直到它有8位。这就是下面的代码所做的。

  dig += 8 until dig >= binary.length
  binary += '0' until binary.length == dig

一旦有8位,就可以将其转换回整数。

© www.soinside.com 2019 - 2024. All rights reserved.