• ベストアンサー

rubyで変数から指定したバイト読むには?

たとえば、 Class Hoge initialize(arg)  @data=arg end def read(size)  @dataからsize分読んで返す。 end end みたいなクラスを hoge=Hoge.new(aaa) puts hoge.read(1024) puts hoge.read(1024) みたいに使いたいです。 指定したバイト分読むってどうするんですか? ご教授の程、宜しくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

IO#readを使って全部の内容を読み込んでいるので、aaaはString。 文字列の特定の箇所を取り出すには [nth, len] による指定や、slice(nth, len) メソッドが使えます。 どこから読むかを @startとでもしておいて def read(size)  ret=@data[@start,size]  @start+=size return ret end @dataを破壊してもいいなら、先頭からsizeだけ削除していくとか。

kingfruits
質問者

お礼

Kmeeさん、ご回答ありがとうございました。

その他の回答 (1)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

> hoge=Hoge.new(aaa) のaaaは何ですか? IOクラスとその派生ならIO#readとか、文字列ならスライスとか、aaaのクラス次第でやりかたは変わります。

kingfruits
質問者

補足

kmeeさん、ご回答有難うございます。 aaaは、 f=File::open(’hoge’,'rb') aaa=f.read f.close のような感じです。 バイナリデータって事ですかね。 その後、each_byteでぐるぐる回せばよいかと、思ったのですが、もうすこし良い方法があったら知りたいです。

関連するQ&A

専門家に質問してみよう