Ruby: personaje a ascii de una cuerda.
Pregunta
esta página wiki dio una idea general de cómo convertir un solo char a ascii http: // en.wikibooks.org/wiki/Ruby_Programming/ASCII
Pero si tengo una cadena y quisiera obtener el ascii de cada personaje, ¿qué debo hacer?
"string".each_byte do |c|
$char = c.chr
$ascii = ?char
puts $ascii
end
No funciona porque no está contento con la línea $ ascii =? char
syntax error, unexpected '?'
$ascii = ?char
^
Solución
¡La variable c
ya contiene el código de carácter!
"string".each_byte do |c|
puts c
end
rendimientos
115
116
114
105
110
103
Otros consejos
puts "string".split('').map(&:ord).to_s
consulte esta publicación para conocer los cambios en ruby1.9 Obteniendo un código de caracteres ASCII en Ruby con `?` (signo de interrogación) falla
Ruby String proporciona el método codepoints
después de 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]
use " x " .ord para un solo carácter o " xyz " .sum para una cadena completa.
También puedes simplemente llamar a_a después de each_byte o incluso 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]
o
?a
Ambos devolverían su equivalente ASCII.