Подтвердить что ты не робот

Ruby: символ ascii из строки

Эта страница wiki дала общее представление о том, как преобразовать один char в ascii http://en.wikibooks.org/wiki/Ruby_Programming/ASCII

Но скажите, если у меня есть строка, и я хочу получить от него каждый символ ascii, что мне нужно делать?

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

Это не работает, потому что он не доволен линией $ascii =? char

syntax error, unexpected '?'
      $ascii = ?char
                ^
4b9b3361

Ответ 1

В переменной c уже содержится код char!

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

дает

115
116
114
105
110
103

Ответ 2

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

Ответ 4

используйте "x".ord для одного символа или "xyz".sum для целой строки.

Ответ 5

"a"[0]

или

?a

Оба возвращают их эквивалент ASCII.

Ответ 6

Ruby String предоставляет метод codepoints после 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]

Ответ 7

Вы также можете просто вызвать to_a после each_byte или даже лучше 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]