AND运算符在Ruby中的文件权限

-2 ruby file-permissions

我正在尝试编写一个函数,它接受两个字符串并返回它们的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)

我错过了什么?

mu *_*ort 5

您的模式字符串('0755''0664')是八进制的,但调用to_i(2)将它们视为二进制,您希望#to_i使用base参数8 调用.你还叫to_idesired两次与其说这两个论点:

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)