# Type conversion

**URL:** <https://www.ruby-forum.com/t/type-conversion/109686>\
**Category:** Ruby\
**Created:** [July 17, 2007, 10:11pm UTC](https://www.ruby-forum.com/t/type-conversion/109686 "2007-07-17T22:11:44Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![snantz](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/c2a13f/32.png) [@snantz](https://www.ruby-forum.com/u/snantz)\
**Post date:** [July 17, 2007, 10:11pm UTC](https://www.ruby-forum.com/t/type-conversion/109686/1 "2007-07-17T22:11:44Z")

</div>

So there is an to\_s for strings and a to\_i for integers. However, if I  
have an array of integers and I want to grab one, I get back and ASCII  
character. For example, when I grab a 1 from the array it returns a 49 -  
but I wanted the one! How do I convert it back to its integer  
want-to-be? Thanks,

~S

P.S. I imagine this is probably an easy solution but, I am a ruby  
newbie.

---

<div class="post-metadata">

**Author:** ![snantz](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/c2a13f/32.png) [@snantz](https://www.ruby-forum.com/u/snantz)\
**Post date:** [July 17, 2007, 10:32pm UTC](https://www.ruby-forum.com/t/type-conversion/109686/2 "2007-07-17T22:32:32Z")

</div>

Shandy N. wrote:

> So there is an to\_s for strings and a to\_i for integers. However, if I  
> have an array of integers and I want to grab one, I get back and ASCII  
> character.

Are you sure you have an array of integers?

Show some code.

> For example, when I grab a 1 from the array it returns a 49 -  
> but I wanted the one! How do I convert it back to its integer  
> want-to-be? Thanks,

This works for me:

# Create int array, 11 to 19

# the \* expands the range into an array

a = \*11…19

# print it to see what we have

p a

# See what we have at the first location

p a[0] # I get 11

–  
James B.

“Take eloquence and wring its neck.”

- Paul Verlaine

---

<div class="post-metadata">

**Author:** ![snantz](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/c2a13f/32.png) [@snantz](https://www.ruby-forum.com/u/snantz)\
**Post date:** [July 18, 2007, 12:43am UTC](https://www.ruby-forum.com/t/type-conversion/109686/3 "2007-07-18T00:43:46Z")

</div>

On Jul 17, 2007, at 5:05 PM, Ian W. wrote:

> > ~S  
> > irb(main):005:0\> i[0].class  
> > –  
> > Posted via [http://www.ruby-forum.com/](http://www.ruby-forum.com/).

arr = “1234”

Will only give you a string.  
You need :  
arr = Array.new  
arr \<\< 1  
arr \<\< 2  
…  
OR  
arr = [1,2,3,4,]

At the command line, use ri:  
ri Array  
ri ‘[]=’  
ri ‘Array#[]=’  
ri ‘String#[]=’

---

<div class="post-metadata">

**Author:** ![snantz](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/c2a13f/32.png) [@snantz](https://www.ruby-forum.com/u/snantz)\
**Post date:** [July 18, 2007, 12:05am UTC](https://www.ruby-forum.com/t/type-conversion/109686/4 "2007-07-18T00:05:47Z")

</div>

Shandy N. wrote:

> So there is an to\_s for strings and a to\_i for integers. However, if I  
> have an array of integers and I want to grab one, I get back and ASCII  
> character. For example, when I grab a 1 from the array it returns a 49 -  
> but I wanted the one! How do I convert it back to its integer  
> want-to-be? Thanks,
> 
> ~S
> 
> P.S. I imagine this is probably an easy solution but, I am a ruby  
> newbie.

Shandy, Perhaps this helps. Note the difference between 004 and 006

irb(main):003:0\> i = “1234”  
=\> “1234”  
irb(main):004:0\> i[0]  
=\> 49  
irb(main):005:0\> i[0].class  
=\> Fixnum  
irb(main):006:0\> i[0,1]  
=\> “1”  
irb(main):007:0\> i[0,1].class  
=\> String  
irb(main):008:0\> i[0,1].to\_i  
=\> 1  
irb(main):009:0\> i[0,1].to\_i.class  
=\> Fixnum

Good luck from another newbie.  
Ian

---

<div class="post-metadata">

**Author:** ![snantz](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/c2a13f/32.png) [@snantz](https://www.ruby-forum.com/u/snantz)\
**Post date:** [July 18, 2007, 5:02pm UTC](https://www.ruby-forum.com/t/type-conversion/109686/5 "2007-07-18T17:02:18Z")

</div>

Shandy N. wrote:

> char = card\_num[i].to\_i
> 
> All I wanted to do was to pick out a single character (a digit) from  
> that string and perform some calculations on it. But by just saying [i]  
> I got a 57 value when I wanted the 9 value. When I said [i…i] I got the  
> 9 value. Thanks for all your help,
> 
> ~S

Card\_num[i] is returning the character value at position i.

card\_num[i].chr will return the character at position i

card\_num[i].chr.to\_i will return the integer value of the character

card\_num[i].type =\> Fixnum

card\_num[i…i].type =\> String and is why card\_num[i…i].to\_i worked

---

<div class="post-metadata">

**Author:** ![snantz](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/c2a13f/32.png) [@snantz](https://www.ruby-forum.com/u/snantz)\
**Post date:** [July 18, 2007, 4:51pm UTC](https://www.ruby-forum.com/t/type-conversion/109686/6 "2007-07-18T16:51:42Z")

</div>

Sorry about not giving code. I did finally get it to work, but here is  
what I had to do:

card\_num = “123456789”  
c = 0

char = card\_num[i…i].to\_i

before I had:

char = card\_num[i].to\_i

All I wanted to do was to pick out a single character (a digit) from  
that string and perform some calculations on it. But by just saying [i]  
I got a 57 value when I wanted the 9 value. When I said [i…i] I got the  
9 value. Thanks for all your help,

~S

---

<div class="post-metadata">

**Author:** ![snantz](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/c2a13f/32.png) [@snantz](https://www.ruby-forum.com/u/snantz)\
**Post date:** [July 18, 2007, 5:09pm UTC](https://www.ruby-forum.com/t/type-conversion/109686/7 "2007-07-18T17:09:21Z")

</div>

On Jul 18, 2007, at 10:51 AM, Shandy N. wrote:

> char = card\_num[i].to\_i
> 
> All I wanted to do was to pick out a single character (a digit) from  
> that string and perform some calculations on it. But by just saying  
> [i]  
> I got a 57 value when I wanted the 9 value. When I said [i…i] I  
> got the  
> 9 value. Thanks for all your help,

It’s a bit late, I guess, but did you consider something like:

```
"123456789"[-1] - ?0 # => 9

```

Regards, Morton
