我正在寻找针对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
,直到它的长度等于dig
。事实上,我根本不理解dig
的作用。
答案 0 :(得分: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位,就可以将它转换回整数。