【发布时间】:2018-06-02 13:28:10
【问题描述】:
我正在寻找 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,但我的猜测是,它正在计算将值左填充到 8 位长度所需的零(例如,
10001到00010001所以反转的值是正确的 (10001000)。