Ruby:来自字符串的ascii字符

时间:2008-09-27 15:34:01

标签: ruby ascii

这个wiki页面概括了如何将单个char转换为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
                ^

7 个答案:

答案 0 :(得分:50)

c变量已包含char代码!

"string".each_byte do |c|
    puts c
end

产量

115
116
114
105
110
103

答案 1 :(得分:17)

puts "string".split('').map(&:ord).to_s

答案 2 :(得分:7)

请参阅此帖子,了解ruby1.9 Getting an ASCII character code in Ruby using `?` (question mark) fails

中的更改

答案 3 :(得分:7)

Ruby String在1.9.1之后提供codepoints方法。

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]

答案 4 :(得分:6)

对单个字符使用“x”.ord或对整个字符串使用“xyz”.sum。

答案 5 :(得分:4)

"a"[0]

?a

两者都会返回它们的ASCII等价物。

答案 6 :(得分:4)

你也可以在each_byte之后调用to_a,甚至更好地调用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]