From: yermej Date: 2007-12-19T00:05:01+09:00 Subject: Re: Convert a char into numbre On Dec 18, 8:35 am, Roberto Decurnex Gorosito wrote: > I am have an String object like "12345678", and an Array object like > [ 8,7,6,5,4,3,2,1]. > The main idea is: > > myStr = '12345678' > myArray = [8,7,6,5,4,3,2,1] > total = 0 > > for i in 0..7 > total+= myStr[ i ].to_i * myArray[ i ] > end > > The awaited result is 120 but coz myStr[ i ] returns the ascii fixnum > i can' t get it Fixnum#chr will give you the String back and then you can use String#to_i: total = 0 myArray.each_with_index do |x, i| total += x * myStr[i].chr.to_i end total => 120 Alternately, you could just subtract 48 from myStr[i] if you'll always be using ASCII, but I don't think that's a good way to do things. As a one-liner: myStr.split(//).zip(myArray).inject(0) {|acc, arr| acc + arr[0].to_i * arr[1]} => 120