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
                ^
¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top