我正在使用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
?
答案 0 :(得分:1)
使用"rb"
代替"r"
将文件读取为二进制文件,您说它出错了,哪个错误?
无论如何,unpack
函数返回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