Reading in files, keeping *ALL* info from file

C

Chris Binc

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
 
S

Sylvain Joyeux

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 Joyeux
 
S

Suraj N. Kurapati

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

Sylvain said:
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-----
 
R

Robert Klemme

Chris said:
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?

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

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

Kind regards

robert
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,743
Messages
2,569,478
Members
44,899
Latest member
RodneyMcAu

Latest Threads

Top