Re: dec*(), *dec(), base_convert() and negative numbers
| From: | Matt W | Date: | Thu, 27 Jul 2006 10:40:52 +0000 |
| Subject: | Re: dec*(), *dec(), base_convert() and negative numbers | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-24997@lists.php.net to get a copy of this message | ||
Hi again,
I realize I might not get any answer about updating these little ol'
functions :-/, but it'd be nice to hear something one way or the other so I
can submit an acceptable patch with correct behavior.
After thinking about it more, are negative numbers even "officially
supported" with the dec[bin|hex|oct] functions? You won't get anything
close to the original back with *dec(dec*(-123)).
Since base_convert() uses the number's absolute value, I'm thinking the only
reason for using "unsigned long" for the dec*() functions is to handle cases
where a PHP double is between LONG_MAX and ULONG_MAX. If so, I think
absolute value can be used everywhere.
Or again, should I update the functions to correctly accept and return
negative values? But I'm not sure if negative bin/hex/oct strings are
desired (semantically).
Thanks for any simple guidance!
Matt
----- Original Message -----
From: "Matt W"
Sent: Wednesday, July 26, 2006
> Hi all,
>
> I was just updating the dec[bin|hex|oct] functions to convert numbers >=
> 2^32 since the [bin|hex|oct]dec counterparts were updated way back in PHP
> 4.1.
>
> My question is if negative numbers should be handled any differently. Now
> negative longs are converted to unsigned which gives a weird result for
> regular users IMO. The *dec() functions ignore negative strings. Because
> of the way base_convert() works, if you pass a negative number (gets
> converted to string), the result will be from the absolute value instead
of
> what you get with dec*().
>
> *) Should the dec*() functions continue to convert negative longs to
> unsigned and use absolute value for doubles?
>
> *) Should absolute value always be used, like with base_convert()?
>
> *) Should everything be changed to support negative numbers going both
> directions (to or from base)?
>
>
> Thanks,
> Matt