2011-07-16 25 views
-3

私は、いくつかのパックファイルを読み込んでそれらの内容を見るためにRubyでスクリプトを実行しています。文字列に関する問題

arch = File.new(*file_name*, "r") 
z = arch.sysread(1).unpack('H*') 
puts z 
content = arch.sysread(32) 

変数z私はエラーを取得し、まだ私が定義した場合sysreadにこれを渡した場合は上記の10の値を持つ変数xと: は、私は私に頭痛を与えることを昨日、この非常に簡単なスクリプトを書きましたそれに10の値を割り当て、それを渡すとOKです。

zsysreadに渡すことができないのはなぜですか?

+0

使用 'のp z'いうよりは' 'おそらくz'を置くz'ない本当に '10'です。また、どのようなエラーが発生するのかを教えてください。 –

答えて

1

"r"の代わりに"rb"の代わりにファイルをバイナリとして読み込み、エラーが発生したとします。どのエラー?

とにかく、unpack関数は、Array(この場合は16進数を文字列として)を返します。あなたはおそらくこれをやりたがっています:content = arch.read(z.first.to_i(16))。 (あなたは私が考えるものをやろうとしている場合)

は、このコードは、より理にかなって:

arch = File.open("filename", "rb") # open the file as binary 
z = arch.read(1).bytes.first  # get the first byte as a integer 
content = arch.read(z)    # read the next z bytes 
+0

ファイルからテキストを抽出したい。ファイルにはテキストの長さを入れてください。この番号が必要です。 – Sergio

+1

@Sergio、あなたの質問にファイルのサンプルと入力を入れてください。ファイルはバイナリですか?より多くのコンテンツがありますか、このテキストだけが必要ですか? (おそらく、ファイル全体を読むことができます)または、自分自身のサイズの前に置かれているバイナリファイルの一部を読みたいでしょうか?このサイズはどのように保存されますか?もっと情報を与える! –

+0

私はこの形式で値が必要なので、私は16進数でファイルを読む必要があります。ファイルの拡張子は* .datで、テキストはありません。私はヘッダーファイルのサンプルを置く。 MTAF¸0< - <「Sの~'Ñ」<žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿHEAD°@ + - + - – Sergio

関連する問題