我正在尝试编写一个函数,它接受两个字符串并返回它们的AND操作.
例如,对于文件权限,755和664应返回644.
def compareBits(desired, existing)
return desired.to_i(2) & existing.to_i(2)
end
compareBits('0755', '0664')
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
您的模式字符串('0755'和'0664')是八进制的,但调用to_i(2)将它们视为二进制,您希望#to_i使用base参数8 调用.你还叫to_i上desired两次与其说这两个论点:
def compareBits(desired, existing)
desired.to_i(8) & existing.to_i(8)
end
Run Code Online (Sandbox Code Playgroud)
这会给你一个数字结果.如果你想要一个八进制字符串,那么添加一个to_s(8)调用:
def compareBits(desired, existing)
(desired.to_i(8) & existing.to_i(8)).to_s(8)
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
46 次 |
| 最近记录: |