私はASCII文字の値( プロジェクトオイラーの質問#22 、具体的に取得したい場合))が必要な状況にいます。問題に直面しています。
Rubyが初めてなので、グーグルで調べて、_?
_が行く方法であることがわかりました:_?A
_または何でも。しかし、それをコードに組み込むと、そのステートメントの結果は文字列_"A"
_になります。文字コードはありません。 _[0]
_とslice(0)
についても同じ問題があり、どちらも理論的にASCIIコードを返すはずです。
私が考えることができる唯一のことは、これはRubyバージョンの問題です。私は1.9.1-p0を使用しています。今日の午後1.8.6からアップグレードしました。同じディレクトリにあるRubyの作業バージョンでは、.Zipファイルにバンドルされていないファイルが既にあるので、ダウンロードしませんでした。
では、なぜすべてのASCIIコードが実際の文字に変換されるのですか?
1.9以前のRubyでは、文字の扱いに多少の一貫性がありませんでした。 ?a
および"a"[0]
は、文字のASCII値(通常は人々が探している動作ではありませんでした))を表す整数を返しますが、実際の使用では、文字は通常1文字の文字列で表されます。 Ruby 1.9、文字が不可解に整数に変換されることはありません。文字のASCII値を取得する場合は、ord
メソッドを使用できます、 お気に入り ?a.ord
(97を返します)。
どう?
"a"[0].ord
1.8/1.9ポータビリティ用。
1.8および1.9の場合
?a.class == String ? ?a.ord : ?a
または
"a".class == String ? "a".ord : "a"[0]
ソリューションを見つけました。 「string」.ordは、sのASCIIコードを返します。 Rubyの1.9シリーズでは、見つけたメソッドが壊れているようです。