Re: Integer casts broken or...?

From: Date: Tue, 15 May 2001 01:57:29 +0000
Subject: Re: Integer casts broken or...?
References: 1 2 3  Groups: php.dev 
Request: Send a blank email to php-dev+get-55276@lists.php.net to get a copy of this message
I know it would confuse me to have 0009 turned into an octal or hex if I type cast it to (int). When I think of (int), I only think of their ultimate decimal value. Perhaps there needs to be a new type cast ((hex)? (oct)?) that will interpret variables in their hex or octal value. I know it is still a long integer in value, but it is a different representation of that number. As for why it was that way to begin with, I am not sure. I could be that it would be too confusing like you say or that type casting was introduced before using hex or octal numbers was. Brian Moon ---------------------------------------------------------------------- dealnews.com, Inc. Makers of dealnews, dealmac http://dealnews.com/ | http://dealmac.com/ ----- Original Message ----- From: "Lars Torben Wilson" <torben@php.net> To: "Brian Moon" <brianm@dealnews.com> Cc: <php-dev@lists.php.net> Sent: Monday, May 14, 2001 4:55 PM Subject: Re: [PHP-DEV] Integer casts broken or...? > Brian Moon writes: > > This is correct. The type casting converts the string into its integer > > value. If there is a non-numeric character in the string, it stops at that > > point. So "09" is 9 and "09t" is 9 but "0t9" is 0. > > > > Brian Moon > > Yeah, I know--it winds up being a strtol() call. However, since PHP > does interpret octal and hex integer literals, it seems odd that it > won't interpret them when encapsulated in strings. This does look > intentional though, since strtol() is called with a base of 10 in > zend_operators.c (line 259 in cvs); replacing it with a base of 0 > gives the result I (personally) would have expected. > > So--is it intentional because it would screw some people up to have > left-zero-padded string numbers interpreted as octals, or is there > another deeper reason that using 0 as the base for strtol() is a bad > idea, or is this unintentional? > > > > ----- Original Message ----- > > From: "Lars Torben Wilson" <torben@php.net> > > To: <php-dev@lists.php.net> > > Sent: Monday, May 14, 2001 1:29 PM > > Subject: [PHP-DEV] Integer casts broken or...? > > > > > > > > > > Type casting to int from string works only for decimal values--is this > > > by design? Example: > > > > > > echo (int) '09' . ', ' . (int) '0x24'; > > > > > > ...produces: > > > > > > 9, 0 > > > > > > which seems intuitively wrong (I'd have expected 0, 36). > > > > > > Is this wrong, or should I just document it? > > > > > > > > > Thanks, > > > > > > Torben > > > > > > -- > > > Torben Wilson <torben@php.net> > > > http://www.thebuttlesschaps.com > > > +1.604.709.0506 > > > > > > > > > -- > > > PHP Development Mailing List > > > <http://www.php.net/> > > > To unsubscribe, e-mail: php-dev-unsubscribe@lists.php.net > > > For additional commands, e-mail: php-dev-help@lists.php.net > > > To contact the list administrators, e-mail: php-list-admin@lists.php.net > > > > > > > > > > > > > -- > Torben Wilson <torben@php.net> > http://www.thebuttlesschaps.com > +1.604.709.0506 > > >

« previous php.dev (#55276) next »