-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函数返回 a Array,在这种情况下,带有一个十六进制数字作为字符串。你可能想要这样做: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 回答