Unpack problems

  • Thread starter Aaron Patterson
  • Start date
A

Aaron Patterson

Hi! I'm having some troubles with unpack that I can't seem to figure
out. My test program looks like this:

foo = "\000\000\022\227"
puts foo.unpack("N")

On linux (ruby 1.8.3 (2005-09-21) [i386-linux]), the test program gives
the following output:

4759

Which is what I expect. However, on OS X (ruby 1.8.2 (2004-12-25)
[powerpc-darwin8.0]), I get the following output:

2534539264

I can't figure out if I'm doing something stupid, or if there is a
problem with ruby. Thanks for the help!

--Aaron
 
W

Wilson Bilkovich

This looks like an endianness issue. Check out what happens when you
reverse it:
puts foo.reverse.unpack("N")

"N" indicates Network byte order (big-endian), but it sounds like you
may want to use system byte-order, which is "L"
I don't have a Mac to test with, unfortunately. Check out page 603 in
the Pickaxe book, if you have it.

--Wilson.
 
A

Aaron Patterson

This looks like an endianness issue. Check out what happens when you
reverse it:
puts foo.reverse.unpack("N")

"N" indicates Network byte order (big-endian), but it sounds like you
may want to use system byte-order, which is "L"
I don't have a Mac to test with, unfortunately. Check out page 603 in
the Pickaxe book, if you have it.

--Wilson.

Looks like it is an endianness issue. Thank you for the help!

--Aaron
 
E

Eric Hodel

Hi! I'm having some troubles with unpack that I can't seem to figure
out. My test program looks like this:

foo = "\000\000\022\227"
puts foo.unpack("N")

On linux (ruby 1.8.3 (2005-09-21) [i386-linux]), the test program
gives
the following output:

4759

Which is what I expect. However, on OS X (ruby 1.8.2 (2004-12-25)
[powerpc-darwin8.0]), I get the following output:

2534539264

I can't figure out if I'm doing something stupid, or if there is a
problem with ruby. Thanks for the help!

Tiger's Ruby's pack/unpack have reversed endianness. You'll have to
build your own Ruby for it to work correctly.
 

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
474,141
Messages
2,570,817
Members
47,367
Latest member
mahdiharooniir

Latest Threads

Top