Question

cette page de wiki a donné une idée générale de la conversion d'un caractère en ascii http: // en.wikibooks.org/wiki/Ruby_Programming/ASCII

Mais si j'ai une chaîne et que je voulais obtenir l'asci de chaque personnage, que dois-je faire?

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

Cela ne fonctionne pas car il n'est pas satisfait de la ligne $ ascii =? char

syntax error, unexpected '?'
      $ascii = ?char
                ^
Était-ce utile?

La solution

La variable c contient déjà le code de caractère!

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

donne

115
116
114
105
110
103

Autres conseils

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

veuillez vous reporter à ce message pour connaître les modifications apportées à ruby1.9 Obtenir un code de caractère ASCII dans Ruby en utilisant `?` (point d'interrogation) échoue

Ruby String fournit la méthode points de code après 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]

utilisez "x" .ord pour un seul caractère ou "xyz" .sum pour une chaîne entière.

Vous pouvez également appeler to_a après each_byte ou même mieux 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]
"a"[0]

ou

?a

Les deux renverraient leur équivalent ASCII.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top