0xff000000


#1

Hello.

I am running on a 32 bit machine.

I need to pass SDL the unsigned long 0xff000000 as a mask.

s = SDL::Surface.new_from(image_data, screen.w, screen.h, 32,
screen.w*4,
0x00ff0000, 0x0000ff00, 0x000000ff,
0xff0000000)

fails with “bignum too big to convert into `unsigned long’ (RangeError)”

which is very understandable, considering that Ruby uses the MSB of a
VALUE
and thus Fixnums can only be 31bit on 32bit machines.

What’s the best idiom to get the mask so I can pass it?

Thanks,

Aur


#2

Looking at the ruby source showed me that ruby /can/ translate
0xff000000 to
a ulong.

The problem was a typo in my code, one extra 0.

Aur S.


#3

On 1/30/07, SonOfLilit removed_email_address@domain.invalid wrote:

which is very understandable, considering that Ruby uses the MSB of a VALUE
and thus Fixnums can only be 31bit on 32bit machines.

What’s the best idiom to get the mask so I can pass it?

Thanks,

Aur

The number 0xff0000000 in your code has seven zeroes instead of six,
so it’s too big to fit in 32 bits.