这个维基页面提供了如何将单个字符串转换为ascii的一般概念http://en.wikibooks.org/wiki/Ruby_Programming/ASCII
但是说如果我有一个字符串并且我想从中获取每个字符的ascii,我需要做什么?
"string".each_byte do |c| $char = c.chr $ascii = ?char puts $ascii end
它不起作用,因为它对行$ ascii =?char不满意
syntax error, unexpected '?' $ascii = ?char ^
Konrad Rudol.. 53
该c
变量已包含char代码!
"string".each_byte do |c| puts c end
产量
115 116 114 105 110 103
alexsuslin.. 19
puts "string".split('').map(&:ord).to_s
甚至比`split('')更好叫`chars` (10认同)
LastZactionH.. 9
Ruby String提供codepoints
1.9.1之后的方法.
str = 'hello world' str.codepoints.to_a => [104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100] str = "????" str.codepoints.to_a => [20320, 22909, 19990, 30028]
小智.. 8
请参阅这篇文章,了解ruby1.9中的更改.使用`?`(问号)在Ruby中获取ASCII字符代码失败
该c
变量已包含char代码!
"string".each_byte do |c| puts c end
产量
115 116 114 105 110 103
puts "string".split('').map(&:ord).to_s
Ruby String提供codepoints
1.9.1之后的方法.
str = 'hello world' str.codepoints.to_a => [104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100] str = "????" str.codepoints.to_a => [20320, 22909, 19990, 30028]
请参阅这篇文章,了解ruby1.9中的更改.使用`?`(问号)在Ruby中获取ASCII字符代码失败
您也可以在each_byte甚至更好的String#bytes之后调用to_a
=> '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]
对单个字符使用"x".ord或对整个字符串使用"xyz".sum.