Ruby中的文件权限和运算符

Ruby中的文件权限和运算符,ruby,file-permissions,Ruby,File Permissions,我试图编写一个函数,它接受两个字符串并返回它们的and运算 例如,具有文件权限的755和664应返回644 def compareBits(desired, existing) return desired.to_i(2) & existing.to_i(2) end compareBits('0755', '0664') 我遗漏了什么?您的模式字符串('0755'和'0664')是八进制的,但是调用到I(2)将它们视为二进制,您希望使用八的base参数进行调用。您也在所需

我试图编写一个函数,它接受两个字符串并返回它们的and运算

例如,具有文件权限的755和664应返回644

def compareBits(desired, existing)
    return desired.to_i(2) & existing.to_i(2)

end

compareBits('0755', '0664')
我遗漏了什么?

您的模式字符串(
'0755'
'0664'
)是八进制的,但是调用
到I(2)
将它们视为二进制,您希望使用八的
base
参数进行调用。您也在
所需的
上调用了两次
to_i
,而不是在两个参数上都调用它:

def compareBits(desired, existing)
  desired.to_i(8) & existing.to_i(8)
end
这将给你一个数值结果。如果您想要一个八进制字符串,请将
添加到\u s(8)
调用:

def compareBits(desired, existing)
  (desired.to_i(8) & existing.to_i(8)).to_s(8)
end

文件权限通常以数字形式存储在Ruby中,即
0664
而不是
'0644'
。在您的程序中执行同样的操作并将其转换为显示目的可能是有意义的。那么,您实际得到了什么?
所需的。to_i(8)
→ <代码>所需。十月