cette page wiki a donné une idée générale de la façon de convertir un seul caractère en ascii http://en.wikibooks.org/wiki/Ruby_Programming/ASCII
Mais disons que si j'ai une chaîne et que je voulais en obtenir l'ascii 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
^
La variable c
contient déjà le code char!
"string".each_byte do |c|
puts c
end
les rendements
115
116
114
105
110
103
puts "string".split('').map(&:ord).to_s
veuillez vous référer à ce post pour les modifications dans Ruby1.9 Échec de l'obtention d'un code de caractère ASCII dans Ruby utilisant `?` (point d'interrogation) échoue))
Ruby String fournit la méthode codepoints
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 encore 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 ASCII équivalent.