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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么二进制到十进制的转换涉及数字'8'?相关的知识,希望对你有一定的参考价值。

我正在寻找针对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的作用。

答案

当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位,就可以将其转换回整数。

以上是关于为什么二进制到十进制的转换涉及数字'8'?的主要内容,如果未能解决你的问题,请参考以下文章

matlab中把字符串转换成数组

8421bcd码转换十进制是多少?

进制转换

python 数字转为8位二进制

Python+int('35',8)为啥等于29?

在c++中编写一个程序实现进制转换。