2011-02-04 1 views
1

Я нашел рубильную библиотеку шифрования, которая использует эту функцию.Ruby 1.9.x undefined method^для строки

def process(text) 
    0.upto(text.length-1) {|i| text[i] = text[i]^round} 
    text 
end 

в рубиновой 1.9.x он выдает ошибку - undefined method ^' for "\x1A":String__

есть ли работа вокруг в рубиновой 1.9.x?

после того, как я пришел прибегая к помощи, чтобы знать, что «В Ruby 1.9 строка [индекс] возвращает символ не код символа (как это было в версии 1.8).» (https://rails.lighthouseapp.com/projects/ 8994/билетов/3144-неопределенный-метод-для-струнный-ROR-234)

заранее спасибо

+0

'text.each_byte.map {| b | (b^round) .chr} .join' – levinalex

ответ

2

Try text[i].ord^round. См. Getting an ASCII character code in Ruby using `?` (question mark) fails для получения дополнительной информации.

+0

ТипError: не может преобразовать Fixnum в строку \t от (irb): 90: in '[] = ' \t от (irb): 90: in' block in irb_binding ' \t от (irb): 90: in 'upto' \t от (irb): 90 –

+0

@Krishnaprasad, в этом случае вы можете попробовать запустить' to_s' на результат 'text [i]^round' – cam