Ruby中的文件权限和运算符
我试图编写一个函数,它接受两个字符串并返回它们的and运算 例如,具有文件权限的755和664应返回644Ruby中的文件权限和运算符,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参数进行调用。您也在所需
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)
→ <代码>所需。十月