# Strings to int conversion

**URL:** <https://www.ruby-forum.com/t/strings-to-int-conversion/171139>\
**Category:** Ruby\
**Created:** [June 26, 2009, 10:55pm UTC](https://www.ruby-forum.com/t/strings-to-int-conversion/171139 "2009-06-26T22:55:18Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![woodzer](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/f08c70/32.png) [@woodzer](https://www.ruby-forum.com/u/woodzer)\
**Post date:** [June 26, 2009, 10:55pm UTC](https://www.ruby-forum.com/t/strings-to-int-conversion/171139/1 "2009-06-26T22:55:18Z")

</div>

s = “1234” [0…1]  
p s #\> “12”  
p s.to\_i #\> 12  
s = s[1]  
p s #\> 50  
p s.to\_i #\> 50

I can see the reason for this happening, but I don’t want it to happen.

So how do I make it return 2 instead of 50?

---

<div class="post-metadata">

**Author:** ![woodzer](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/f08c70/32.png) [@woodzer](https://www.ruby-forum.com/u/woodzer)\
**Post date:** [June 26, 2009, 11:01pm UTC](https://www.ruby-forum.com/t/strings-to-int-conversion/171139/2 "2009-06-26T23:01:42Z")

</div>

On Sat, Jun 27, 2009 at 05:55:20AM +0900, Peter Wu wrote:

> s = “1234” [0…1]  
> p s #\> “12”  
> p s.to\_i #\> 12  
> s = s[1]  
> p s #\> 50  
> p s.to\_i #\> 50
> 
> I can see the reason for this happening, but I don’t want it to happen.
> 
> So how do I make it return 2 instead of 50?

“1234”.split(’’)[1].to\_i # =\> 2

---

<div class="post-metadata">

**Author:** ![woodzer](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/f08c70/32.png) [@woodzer](https://www.ruby-forum.com/u/woodzer)\
**Post date:** [June 26, 2009, 11:05pm UTC](https://www.ruby-forum.com/t/strings-to-int-conversion/171139/3 "2009-06-26T23:05:12Z")

</div>

Peter Wu wrote:

> s = “1234” [0…1]  
> p s #\> “12”  
> p s.to\_i #\> 12  
> s = s[1]  
> p s #\> 50  
> p s.to\_i #\> 50
> 
> I can see the reason for this happening, but I don’t want it to happen.
> 
> So how do I make it return 2 instead of 50?

s[1,1]  
s[1…1]

---

<div class="post-metadata">

**Author:** ![woodzer](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/f08c70/32.png) [@woodzer](https://www.ruby-forum.com/u/woodzer)\
**Post date:** [June 26, 2009, 11:07pm UTC](https://www.ruby-forum.com/t/strings-to-int-conversion/171139/4 "2009-06-26T23:07:58Z")

</div>

Thanks, guys.

---

<div class="post-metadata">

**Author:** ![woodzer](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/f08c70/32.png) [@woodzer](https://www.ruby-forum.com/u/woodzer)\
**Post date:** [June 26, 2009, 11:19pm UTC](https://www.ruby-forum.com/t/strings-to-int-conversion/171139/5 "2009-06-26T23:19:15Z")

</div>

Hi,

Am Samstag, 27. Jun 2009, 05:55:20 +0900 schrieb Peter Wu:

> s = “1234” [0…1]  
> s = s[1]  
> p s #\> 50
> 
> I can see the reason for this happening, but I don’t want it to happen.

The answer has already been given.

As far as I know Ruby 1.9 returns “2”.

There’s another [] operator that’s not well known:

16[4] #=\> 1 (the 4th bit is 1)

Bertram

---

<div class="post-metadata">

**Author:** ![woodzer](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/f08c70/32.png) [@woodzer](https://www.ruby-forum.com/u/woodzer)\
**Post date:** [June 27, 2009, 1:18pm UTC](https://www.ruby-forum.com/t/strings-to-int-conversion/171139/6 "2009-06-27T13:18:07Z")

</div>

Hi –

On Sat, 27 Jun 2009, Peter Wu wrote:

> s = “1234” [0…1]  
> p s #\> “12”  
> p s.to\_i #\> 12  
> s = s[1]  
> p s #\> 50  
> p s.to\_i #\> 50
> 
> I can see the reason for this happening, but I don’t want it to happen.
> 
> So how do I make it return 2 instead of 50?

Addendum to other answers:

In 1.9 it returns the character rather than the character code.

David

---

<div class="post-metadata">

**Author:** ![woodzer](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/f08c70/32.png) [@woodzer](https://www.ruby-forum.com/u/woodzer)\
**Post date:** [June 27, 2009, 3:24am UTC](https://www.ruby-forum.com/t/strings-to-int-conversion/171139/7 "2009-06-27T03:24:15Z")

</div>

One of Ruby’s problems is that it invites clever solutions, which are  
computationally costly and create undue amounts of garbage.

How about

?\> “1234”[1].chr  
=\> “2”

> >

Cheers,

Bob Schaaf

---

<div class="post-metadata">

**Author:** ![woodzer](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/f08c70/32.png) [@woodzer](https://www.ruby-forum.com/u/woodzer)\
**Post date:** [June 28, 2009, 5:38am UTC](https://www.ruby-forum.com/t/strings-to-int-conversion/171139/8 "2009-06-28T05:38:23Z")

</div>

Bertram S. wrote:

> There’s another [] operator that’s not well known:
> 
> 16[4] #=\> 1 (the 4th bit is 1)

Wow, I’ve been using ruby for many years but there’s  
always something new to learn isn’t it? Thanks.

Daniel

---

<div class="post-metadata">

**Author:** ![woodzer](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/f08c70/32.png) [@woodzer](https://www.ruby-forum.com/u/woodzer)\
**Post date:** [June 30, 2009, 11:23am UTC](https://www.ruby-forum.com/t/strings-to-int-conversion/171139/9 "2009-06-30T11:23:08Z")

</div>

Peter Wu-5 wrote:

> So how do I make it return 2 instead of 50?

p s[1].chr.to\_i #=\> 2
