From: Lyle Johnson Date: 2003-11-18T06:47:18+09:00 Subject: Re: pack bug on 64-bit ruby Daniel Berger wrote: > Looks like there's a 64-bit related bug in pack(): > > irb(main):007:0> [-1].pack("V") > RangeError: integer 18446744073709551615 too big to convert to `unsigned > int' > from (irb):7:in `pack' > from (irb):7 If Array#pack is supposed to output a four-character string for the *unsigned* long value, I think maybe this shouldn't work for 64-bit. You're passing in a value of -1, which is 2**64 - 1 when represented as an unsigned long on a 64-bit machine. You can't pack that into four characters (bytes). Out of curiosity, what happens if you instead try this? [-1].pack("L_") Note the trailing underscore. If I read the code right, this should do the right thing.