回答:
1.8シリーズまでのRubyでは、次の両方で65(ASCIIの場合)が生成されます。
puts ?A
'A'[0]
Ruby 1.9では動作が変更され、上記の両方で代わりに「A」が生成されます。Ruby 1.9でこれを行う正しい方法は次のとおりです。
'A'[0].ord
残念ながら、このordメソッドはRuby 1.8には存在しません。
dylanfmとAShellyのコメントを+1したいのですが、[0]を追加します。
'A'.unpack('C')[0]
unpack呼び出しは、単一の整数を含む配列を返します。これは、整数が必要な場合に常に受け入れられるわけではありません。
$ ruby -e 'printf( "0x%02X \ n"、 "A" .unpack( "C"))'
-e:1:in `printf ':配列を整数に変換できません(TypeError)
    -e:1から
$ ruby -e 'printf( "0x%02X \ n"、 "A" .unpack( "C")[0])'
0x41
ドル 
Ruby 1.8.1、1.8.7、および1.9.2で動作するコードを記述しようとしています。
unpack( "c")は-1を返し、ord()は255を返すため(Cのcharが署名されているプラットフォームで実行されているにもかかわらず)、Cを大文字でアンパックするように編集されました。
RFCを介して純粋なRubyバージョンのStringprepを作成しているときに、これに遭遇しました。
chr[0,255]外で失敗することに注意してください。代わりに1.9.x-2.1.xのポータブル置換を使用してください:
[22] pry(main)> "\u0221".ord.chr
RangeError: 545 out of char range
from (pry):2:in 'chr'
[23] pry(main)> x = "\u0221".unpack('U')[0]
=> 545
[24] pry(main)> [x].pack('U')
=> "ȡ"
[25] pry(main)>
              charあり、Unicodeの場合はその逆です
                    さらに、文字列にcharがあり、ループなしでそれをデコードしたい場合:
puts 'Az'[0]
=> 65
puts 'Az'[1]
=> 122
              あなたはこれらを持つことができます:
65.chr.ord
'a'.ord.chr
              1.8.6と1.9.3のコードを書いていて、これらのソリューションを両方の環境で動作させることができませんでした:(
しかし、私は別の解決策に出くわしました:http : //smajnr.net/2009/12/ruby-1-8-nomethoderror-undefined-method-ord-for-string.html
それも私にはうまくいきませんでしたが、私はそれを私の用途に合わせて適応させました:
unless "".respond_to?(:ord)
  class Fixnum
    def ord
      return self
    end
  end
end
それを行った後、両方が両方の環境で機能します
'A'[0].ord
"A".unpack("C")[0]、それはRuby 1.8.1、Ruby 1.8.7、Ruby 1.9.2を対象としていました。それはあなたの環境で失敗しますか?どんな失敗?
                    self.status  = tagAccountString[4].unpack('C')[0]        1.8.6では私が取得       Exception undefined method 「:メインのバッファリングされたタグデータを処理するFixnumか-の両方の環境で(私の提案された解決策で)次のコードの作品をexit` 0アンパック          self.status  = tagAccountString[4].ord         より歓迎以上である(例えば、Aよりよい解決策を)何かアドバイスを
                    tagAccountString[4]新しいルビーでは文字列を返しますが、Ruby 1.8ではFixnumを返すために使用されていました。そのため、エラーが表示されましたundefined method unpack for 0:Fixnum。を使用することstatus = tagAccountString[4,1].unpack('C')[0]もstatus, = tagAccountString.unpack('xxxxC')、常に4文字を無視して次の文字を変換することもできます。