- ベストアンサー
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) みたいに使いたいです。 指定したバイト分読むってどうするんですか? ご教授の程、宜しくお願いいたします。
- みんなの回答 (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だけ削除していくとか。
その他の回答 (1)
- kmee
- ベストアンサー率55% (1857/3366)
回答No.1
> hoge=Hoge.new(aaa) のaaaは何ですか? IOクラスとその派生ならIO#readとか、文字列ならスライスとか、aaaのクラス次第でやりかたは変わります。
質問者
補足
kmeeさん、ご回答有難うございます。 aaaは、 f=File::open(’hoge’,'rb') aaa=f.read f.close のような感じです。 バイナリデータって事ですかね。 その後、each_byteでぐるぐる回せばよいかと、思ったのですが、もうすこし良い方法があったら知りたいです。
お礼
Kmeeさん、ご回答ありがとうございました。