2

1台のPCではruby1.8.6でこれが発生し、他のPCではエラーが発生します

irb(main):001:0> buff = "12345678"
 => "12345678"
 irb(main):002:0> buff[4] =0x30
  => 48
   irb(main):003:0> buff
 => "12340678"
 irb(main):004:0> @new0 = "123456789"
 => "123456789"
  irb(main):005:0> @new0[4] = 0x30 
 => 48


 > @buff ="123456789"
 => "123456789" 
  > @buff
 => "123456789" 
 > @buff[4]= 0x30
 TypeError: can't convert Fixnum into String
from (irb):3:in `[]='
from (irb):3

  > @buff[4] = 0x30
4

1 に答える 1

5

2番目の例ではRuby1.9を使用しているようです。メソッドが変更され、[]=文字列のみを受け入れます。

次を使用して整数値を文字列に変換できますchr

@buff[4] = 0x30.chr

そして、次のコマンドで文字のバイト値を取得します。

@buff[4].ord
# => 48
于 2012-08-17T13:51:15.160 に答える