# Convert a char into numbre

**URL:** <https://www.ruby-forum.com/t/convert-a-char-into-numbre/123537>\
**Category:** Ruby\
**Created:** [December 18, 2007, 3:38pm UTC](https://www.ruby-forum.com/t/convert-a-char-into-numbre/123537 "2007-12-18T15:38:01Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Roberto\_Decurnex\_Go](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/779978/32.png) [@Roberto\_Decurnex\_Go](https://www.ruby-forum.com/u/Roberto_Decurnex_Go)\
**Post date:** [December 18, 2007, 3:38pm UTC](https://www.ruby-forum.com/t/convert-a-char-into-numbre/123537/1 "2007-12-18T15:38:01Z")

</div>

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

Like a quick solution i have to do this:

myStr = ‘12345678’  
myArray = [8,7,6,5,4,3,2,1]  
total = 0

for i in 0…7  
total += ( String.new \<\< myStr[i] ).to\_i \* myArray[i]  
end

It’s so horrible!!! ☹

Please, help my code to be beautiful as ruby is

---

<div class="post-metadata">

**Author:** ![Roberto\_Decurnex\_Go](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/779978/32.png) [@Roberto\_Decurnex\_Go](https://www.ruby-forum.com/u/Roberto_Decurnex_Go)\
**Post date:** [December 18, 2007, 4:03pm UTC](https://www.ruby-forum.com/t/convert-a-char-into-numbre/123537/2 "2007-12-18T16:03:21Z")

</div>

Roberto Decurnex Gorosito wrote:

> end
> 
> The awaited result is 120 but coz myStr[i] returns the ascii fixnum  
> i can’ t get it

Try myStr[i,1]

---

<div class="post-metadata">

**Author:** ![Roberto\_Decurnex\_Go](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/779978/32.png) [@Roberto\_Decurnex\_Go](https://www.ruby-forum.com/u/Roberto_Decurnex_Go)\
**Post date:** [December 18, 2007, 4:09pm UTC](https://www.ruby-forum.com/t/convert-a-char-into-numbre/123537/3 "2007-12-18T16:09:47Z")

</div>

You are right, thanks!

---

<div class="post-metadata">

**Author:** ![Roberto\_Decurnex\_Go](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/779978/32.png) [@Roberto\_Decurnex\_Go](https://www.ruby-forum.com/u/Roberto_Decurnex_Go)\
**Post date:** [December 18, 2007, 4:05pm UTC](https://www.ruby-forum.com/t/convert-a-char-into-numbre/123537/4 "2007-12-18T16:05:42Z")

</div>

On Dec 18, 8:35 am, Roberto Decurnex Gorosito  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> 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

---

<div class="post-metadata">

**Author:** ![Roberto\_Decurnex\_Go](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/779978/32.png) [@Roberto\_Decurnex\_Go](https://www.ruby-forum.com/u/Roberto_Decurnex_Go)\
**Post date:** [December 18, 2007, 4:17pm UTC](https://www.ruby-forum.com/t/convert-a-char-into-numbre/123537/5 "2007-12-18T16:17:28Z")

</div>

That’s what i was looking for chr, i just forget that one. Thanks!

---

<div class="post-metadata">

**Author:** ![Roberto\_Decurnex\_Go](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/779978/32.png) [@Roberto\_Decurnex\_Go](https://www.ruby-forum.com/u/Roberto_Decurnex_Go)\
**Post date:** [December 18, 2007, 4:14pm UTC](https://www.ruby-forum.com/t/convert-a-char-into-numbre/123537/6 "2007-12-18T16:14:31Z")

</div>

roberto te llego?  
lo que tenes que hacer es , biceps y espalada hoy

2007/12/18, yermej [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):
