Hello,

I am working with SNMP and 64 Bit unsigned Intergers.

To give you a view on the different possible values and types I come across:
2147483648 =  10000000000000000000000000000000 =  80000000 = 2^31
4294967296 = 100000000000000000000000000000000 = 100000000 = 2^32
4294967295 =  11111111111111111111111111111111 =  FFFFFFFF = 2^32 -1
8589934591 = 111111111111111111111111111111111 = 1FFFFFFFF = 2^33 -1

9223372036854775808 =
1000000000000000000000000000000000000000000000000000000000000000 =
8000000000000000 = 2^63
9223372036854775807 =
111111111111111111111111111111111111111111111111111111111111111 =
7FFFFFFFFFFFFFFF = 2^63 -1

18446744073709551616 =
10000000000000000000000000000000000000000000000000000000000000000 =  ?? =
2^64
18446744073709551615 =
1111111111111111111111111111111111111111111111111111111111111111 =  ?? =
2^64 - 1
36893488147419103231 =
11111111111111111111111111111111111111111111111111111111111111111 =  ?? =
2^65 - 1

The thing that I do is
$var = unpack("N*", $any64bitvalue);
or
$var = unpack("I*", $any64bitvalue);
to make sure the number is an unsigned Interger.

When I access the number in $var (as a string or a number) it has ben
chopped to a 32 Bit number.

Now I tested Math:BigInt  $var = Math::BigInt->new(unpack("I*",
$any64bitvalue));
But still on the  $var is chopped to 32 Bit in the next subroutine;

This means that the value 36893488147419103231  becomes  8589934591.

I do not have the possibility to use 64 BIT perl.
I am using aix 4.3.3 and I cant tell you it is no fun building a perl there.

BTW: Does anyone knows anything about perl typecasting?

Thx,
Bastian


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to