Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:25012 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 18836 invoked by uid 1010); 27 Jul 2006 14:26:54 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 18821 invoked from network); 27 Jul 2006 14:26:54 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 27 Jul 2006 14:26:54 -0000 X-PHP-List-Original-Sender: php_lists@realplain.com X-Host-Fingerprint: 69.179.208.43 msa3-mx.centurytel.net Linux 2.4/2.6 Received: from ([69.179.208.43:50825] helo=msa3-mx.centurytel.net) by pb1.pair.com (ecelerity 2.1.1.3 r(11751M)) with ESMTP id C2/72-23194-C78C8C44 for ; Thu, 27 Jul 2006 10:06:53 -0400 Received: from pc1 (69-29-174-70.dyn.centurytel.net [69.29.174.70]) by msa3-mx.centurytel.net (8.13.6/8.13.6) with SMTP id k6RE6neu008177; Thu, 27 Jul 2006 09:06:49 -0500 Message-ID: <019a01c6b185$e7c9b300$0201a8c0@pc1> To: , "Michael Wallner" References: <00c601c6b095$a1a2e220$0201a8c0@pc1> <010601c6b169$225b9eb0$0201a8c0@pc1> <6E.DD.23194.071B8C44@pb1.pair.com> <016401c6b17e$027908c0$0201a8c0@pc1> <19.E0.23194.CE2C8C44@pb1.pair.com> Date: Thu, 27 Jul 2006 09:06:50 -0500 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2800.1807 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1807 Subject: Re: [PHP-DEV] dec*(), *dec(), base_convert() and negative numbers From: php_lists@realplain.com ("Matt W") Hi Michael, ----- Original Message ----- From: "Michael Wallner" Sent: Thursday, July 27, 2006 > Matt W wrote: > > > That's why I'm assuming negative numbers aren't "really" supported > > now (not in any form with base_convert()), but it's simply a side > > effect of wanting to handle *positive* numbers between LONG_MAX and > > ULONG_MAX. e.g. when doing dechex(4294967173) that's a PHP double, > > but it gets converted to long (becomes -123), and finally unsigned > > long (recovering 4294967173). IOW, after convert_to_long() in dec*() > > it doesn't know if -123 or 4294967173 was passed. Make sense? > > (Actually, it doesn't, that's my point. :-)) > > For your computer 0xffffff85 is -123 and 4294967173. It's just how > you look on it. Oh, I know. But that still doesn't answer the question of how to handle negative *double's*. > > So after more thinking, I figure when upgrading dec*() to handle any > > number, absolute value should be used (then int(123) would be > > returned in my example). Unless the all the functions are changed to > > properly accept/return negatives... I personally don't care either > > way on that. > > No way. Why should hexdec(dechex(-123)) return +123? Because it makes more sense to users than 4294967173? :-) They don't care what's stored as 0xffffff85, blah blah, just what they actually see. Oh, and doing the same to/from using -123 and base_convert(), you'll get +123! IMO, it was *wrong* to convert a negative to unsigned long. Absolute value should've been used like with base_convert (though that may be by chance rather than design :-)). Of course, it could all be very consistent/logical, to me, by accepting/returning negatives. But what are the thoughts on negative base 2-36 strings? No-no's? > -- > Michael I appreciate your replies. I'll be gone for a while now, so I won't be bothering you with another e-mail. :-P Matt