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" <[EMAIL PROTECTED]>
To: "Brian Moon" <[EMAIL PROTECTED]>
Cc: <[EMAIL PROTECTED]>
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" <[EMAIL PROTECTED]>
> > To: <[EMAIL PROTECTED]>
> > 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 <[EMAIL PROTECTED]>
> > >  http://www.thebuttlesschaps.com
> > >  +1.604.709.0506
> > >
> > >
> > > --
> > > PHP Development Mailing List <http://www.php.net/>
> > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > For additional commands, e-mail: [EMAIL PROTECTED]
> > > To contact the list administrators, e-mail:
[EMAIL PROTECTED]
> > >
> > >
> > >
> >
>
> --
>  Torben Wilson <[EMAIL PROTECTED]>
>  http://www.thebuttlesschaps.com
>  +1.604.709.0506
>
>
>


-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to