type conversion

S

Shandy Nantz

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.
 
J

James Britt

Shandy said:
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
 
I

Ian Whitlock

Shandy said:
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
 
J

John Joyce

Shandy said:
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
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#[]='
 
S

Shandy Nantz

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.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 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
 
P

Peter Hickman

Shandy said:
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.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 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 is returning the character value at position i.

card_num.chr will return the character at position i

card_num.chr.to_i will return the integer value of the character

card_num.type => Fixnum

card_num[i..i].type => String and is why card_num[i..i].to_i worked
 
M

Morton Goldberg

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.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 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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,262
Messages
2,571,311
Members
47,986
Latest member
ColbyG935

Latest Threads

Top