2

在一台电脑上我在 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
4

1 回答 1

5

好像您在第二个示例中使用的是 Ruby 1.9。该[]=方法已更改,仅接受字符串。

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

@buff[4] = 0x30.chr

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

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