无法将Fixnum转换为String(TypeError)

时间:2012-08-17 13:40:01

标签: ruby

在一台电脑上,我在红宝石1.8.6和其他电脑上得到这个我收到错误

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

1 个答案:

答案 0 :(得分:5)

好像你在第二个例子中使用Ruby 1.9。 []=方法已更改,只接受字符串。

您可以使用chr将整数值转换为字符串:

@buff[4] = 0x30.chr

使用以下命令检索字符的字节值:

@buff[4].ord
# => 48