Строки вашего режима ('0755'
и '0664'
) восьмеричные, но вызов to_i(2)
обрабатывает их как двоичные, вы хотите вызвать #to_i
с аргументом base
, равным восьми.Вы также дважды вызываете to_i
для desired
вместо вызова обоих аргументов:
def compareBits(desired, existing)
desired.to_i(8) & existing.to_i(8)
end
Это даст вам числовой результат.Если вам нужна восьмеричная строка, добавьте to_s(8)
call:
def compareBits(desired, existing)
(desired.to_i(8) & existing.to_i(8)).to_s(8)
end