-3

Ruby でスクリプトを実行して、いくつかのパック ファイルを読み取り、その内容を確認しています。昨日、頭が痛くなるような非常に単純なスクリプトを書きました。

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

上記の変数zの値は 10 です。これを に渡すsysreadとエラーが発生しますが、変数を定義しxて値 10 を割り当てて渡すと、問題なく実行されます。

zに渡せないのはなぜsysreadですか?

4

1 に答える 1

1

"rb"の代わりにを使用してファイルをバイナリとして読み取ると"r"、エラーが発生すると言われましたが、どのエラーですか?

とにかく、この場合、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
于 2011-07-16T15:19:35.077 に答える