我正在研究关于Coder字节的以下编码挑战的解决方案:
使用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的作用。
发布于 2017-12-20 03:42:22
当str为"47“时,二进制将被赋值为"111101”。
binary = str.to_i.to_s(2).reverse通常,您将二进制值表示为8个字符或8位。此时,您不能简单地将二进制字符串转换回整数。"111101“是二进制的61。
相反,您需要使用零填充"111101“,直到它有8位为止。下面的代码就是这样做的。
dig += 8 until dig >= binary.length
binary += '0' until binary.length == dig一旦有了8位,就可以将其转换回整数。
https://stackoverflow.com/questions/47898369
复制相似问题