为什么二进制到十进制的转换涉及数字'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
我不明白为什么二进制文件需要添加0
s,直到它的长度等于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'?的主要内容,如果未能解决你的问题,请参考以下文章