Reputation: 373
this wiki page gave a general idea of how to convert a single char to ascii http://en.wikibooks.org/wiki/Ruby_Programming/ASCII
But say if I have a string and I wanted to get each character's ascii from it, what do i need to do?
"string".each_byte do |c|
$char = c.chr
$ascii = ?char
puts $ascii
end
It doesn't work because it's not happy with the line $ascii = ?char
syntax error, unexpected '?'
$ascii = ?char
^
Upvotes: 37
Views: 118667
Reputation: 289
Ruby String provides the codepoints
method after 1.9.1.
str = 'hello world'
str.codepoints
=> [104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100]
str = "你好世界"
str.codepoints
=> [20320, 22909, 19990, 30028]
Upvotes: 14
Reputation: 2005
You could also just call to_a after each_byte or even better String#bytes
=> 'hello world'.each_byte.to_a
=> [104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100]
=> 'hello world'.bytes
=> [104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100]
Upvotes: 8
Reputation:
please refer to this post for the changes in ruby1.9 Getting an ASCII character code in Ruby using `?` (question mark) fails
Upvotes: 8
Reputation: 545598
The c
variable already contains the char code!
"string".each_byte do |c|
puts c
end
yields
115
116
114
105
110
103
Upvotes: 60