字符串问题

时间:2011-07-16 14:32:40

标签: ruby string integer fixnum

我正在使用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

1 个答案:

答案 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