Ruby: znak do ascii z ciągu znaków

Ta strona wiki dała ogólny pomysł jak przekonwertować pojedynczy znak do ascii http://en.wikibooks.org/wiki/Ruby_Programming/ASCII

Ale powiedzmy, że jeśli mam ciąg znaków i chciałem uzyskać z niego ascii każdego znaku, co muszę zrobić?

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

Nie działa, bo nie jest zadowolony z linii $ascii = ?char

syntax error, unexpected '?'
      $ascii = ?char
                ^
 23
Author: user2668, 2008-09-27

7 answers

Zmienna c zawiera już kod char!

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

115
116
114
105
110
103
 47
Author: Konrad Rudolph,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-27 15:37:24
puts "string".split('').map(&:ord).to_s
 17
Author: alexsuslin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-19 18:41:44

Proszę zapoznać się z tym postem, aby zapoznać się ze zmianami w ruby1. 9 otrzymanie kodu znaków ASCII w Ruby za pomocą `?"(question mark) fails

 7
Author: Community,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:34:17

Użyj "x".ord dla pojedynczego znaku lub "xyz".suma za cały ciąg.

 6
Author: Sh.K,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-15 19:59:25
"a"[0]

Lub

?a

Oba zwracają swój odpowiednik ASCII.

 3
Author: Mark F,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-13 00:53:11

Ruby String dostarcza metodę codepoints po 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]
 3
Author: LastZactionHero,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-23 14:55:08

Można też po prostu wywołać to_a po każdym bajcie lub jeszcze lepszy Łańcuch # bajty

=> '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]
 1
Author: nikkypx,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-13 19:56:46