Reading in files, keeping *ALL* info from file

Hi,

I am trying to read in a file and parse it. It uses hex values, such
as 0x0000 to identify certain tags. When I read this into
Ruby(IO.read), it simply gives me a blank string: “” However, I need to
be able to get 0x0000 from my input. The same is true of 0x0001, which
returns the same as 0x1, but I need the leading 0’s.

I have attempted to use the lower lever sysread an syswrite, but to no
avail. I have the same problem and in addition, when asked to read
0x0000 it returns an (IOError) where read simply returns “”.

Is there any way for me to read this information in and keep every byte?

Thank you

Chris

Works fine here, maybe you should send how you do read your file

[~/tmp]% cat test_read.rb
data = File.open(ARGV[0]) do |file|
file.read
end
puts data.inspect

[~/tmp]% echo -n ‘\000\000\000\001’ > file
[~/tmp]% ruby test_read.rb file
“\000\000\000\001”

Regards,
Sylvain J.

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Sylvain J. wrote:

data = File.open(ARGV[0]) do |file|
file.read
end
puts data.inspect

This code can be shortened as thus:

p ARGF.read

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2.2 (GNU/Linux)

iD8DBQFE4kcnmV9O7RYnKMcRAs5dAJ475eHEz7BmrL+qVQP2f3OE2Y6IkQCgmae8
LO7exDURrnYncZQ17UOQjHs=
=Qn+B
-----END PGP SIGNATURE-----

Chris Binc wrote:

0x0000 it returns an (IOError) where read simply returns “”.

Is there any way for me to read this information in and keep every byte?

Since you’re reading binary data, here’s what I’d do

bytes = File.open(f, “rb”) {|io| io.read}

Kind regards

robert