web-dev-qa-db-ja.com

Ruby:文字列からASCIIへの文字

このWikiページは、単一の文字をASCIIに変換する方法の一般的なアイデアを示しました http://en.wikibooks.org/wiki/Ruby_Programming/ASCII

しかし、文字列があり、それから各文字のアスキーを取得したい場合、どうすればよいですか?

"string".each_byte do |c|
      $char = c.chr
      $ascii = ?char
      puts $ascii
end

行$ ascii =?charに満足していないため、機能しません。

syntax error, unexpected '?'
      $ascii = ?char
                ^
27
user2668

c変数には既にcharコードが含まれています!

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

利回り

115
116
114
105
110
103
52
Konrad Rudolph
puts "string".split('').map(&:ord).to_s
18
alexsuslin

ruby1.9の変更については、この投稿を参照してください `?`(疑問符)を使用してASCIIでRuby文字コードを取得できません

8
user209041

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]
8
LastZactionHero

単一の文字には「x」.ordを使用し、文字列全体には「xyz」.sumを使用します。

6
Sh.K

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]
6
nikkypx
"a"[0]

または

?a

両方ともASCIIに相当します。

4
Mark F