こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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)

みたいに使いたいです。

指定したバイト分読むってどうするんですか?

ご教授の程、宜しくお願いいたします。

投稿日時 - 2012-01-25 23:50:53

QNo.7266799

困ってます

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

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

投稿日時 - 2012-01-27 20:25:33

お礼

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

投稿日時 - 2012-01-28 19:18:12

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

> hoge=Hoge.new(aaa)
のaaaは何ですか?

IOクラスとその派生ならIO#readとか、文字列ならスライスとか、aaaのクラス次第でやりかたは変わります。

投稿日時 - 2012-01-26 03:29:02

補足

kmeeさん、ご回答有難うございます。

aaaは、

f=File::open(’hoge’,'rb')
aaa=f.read
f.close

のような感じです。

バイナリデータって事ですかね。

その後、each_byteでぐるぐる回せばよいかと、思ったのですが、もうすこし良い方法があったら知りたいです。

投稿日時 - 2012-01-26 11:44:29

あなたにオススメの質問