I noticed something that does seem correct. In an application I have been
shipping, I pack value in order to perform IOCTL calls against a device. I
hit a problem when using Ruby 1.8.1. The following worked in 1.6.7 and
[ 0xFFFFFFFF ].pack("i")
In 1.8.1, this raises a “Range Error: bignum to big to convert into ‘int’”.
I understood that an “i” designator meant a signed native integer (32-bits).
I don’t see why this should fail.
Also, if I use the “l” designator to indicate a signed long integer (again
32-bits). Everything works.
[ 0xFFFFFFFF ].pack("l")
Shouldn’t “i” and “l” act the same if the native size of an integer is