python 2.2 string conversion ?

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • ken

    python 2.2 string conversion ?

    I've been looking for a solution to a string to long conversion problem that
    I've run into
    [color=blue][color=green][color=darkred]
    >>> x = 'e10ea210'
    >>> print x[/color][/color][/color]
    e10ea210[color=blue][color=green][color=darkred]
    >>> y=long(x)[/color][/color][/color]
    Traceback (most recent call last):
    File "<pyshell#2 >", line 1, in ?
    y=long(x)
    ValueError: invalid literal for long(): e10ea210[color=blue][color=green][color=darkred]
    >>> x='0xe10ea210'
    >>> print x[/color][/color][/color]
    0xe10ea210[color=blue][color=green][color=darkred]
    >>> y=long(x)[/color][/color][/color]
    Traceback (most recent call last):
    File "<pyshell#5 >", line 1, in ?
    y=long(x)
    ValueError: invalid literal for long(): 0xe10ea210[color=blue][color=green][color=darkred]
    >>> x="e10ea210"
    >>> y=long(x)[/color][/color][/color]
    Traceback (most recent call last):
    File "<pyshell#7 >", line 1, in ?
    y=long(x)
    ValueError: invalid literal for long(): e10ea210[color=blue][color=green][color=darkred]
    >>> x="0xe10ea210 "
    >>> y=long(x)[/color][/color][/color]
    Traceback (most recent call last):
    File "<pyshell#9 >", line 1, in ?
    y=long(x)
    ValueError: invalid literal for long(): 0xe10ea210[color=blue][color=green][color=darkred]
    >>>[/color][/color][/color]

    What am I doing wrong?

    TIA


  • Bengt Richter

    #2
    Re: python 2.2 string conversion ?

    On Thu, 24 Jul 2003 05:31:17 GMT, "ken" <kericks272@ear thlink.net> wrote:
    [color=blue]
    >I've been looking for a solution to a string to long conversion problem that
    >I've run into
    >[color=green][color=darkred]
    >>>> x = 'e10ea210'
    >>>> print x[/color][/color]
    >e10ea210[color=green][color=darkred]
    >>>> y=long(x)[/color][/color]
    >Traceback (most recent call last):
    > File "<pyshell#2 >", line 1, in ?
    > y=long(x)
    >ValueError: invalid literal for long(): e10ea210[color=green][color=darkred]
    >>>> x='0xe10ea210'
    >>>> print x[/color][/color]
    >0xe10ea210[color=green][color=darkred]
    >>>> y=long(x)[/color][/color]
    >Traceback (most recent call last):
    > File "<pyshell#5 >", line 1, in ?
    > y=long(x)
    >ValueError: invalid literal for long(): 0xe10ea210[color=green][color=darkred]
    >>>> x="e10ea210"
    >>>> y=long(x)[/color][/color]
    >Traceback (most recent call last):
    > File "<pyshell#7 >", line 1, in ?
    > y=long(x)
    >ValueError: invalid literal for long(): e10ea210[color=green][color=darkred]
    >>>> x="0xe10ea210 "
    >>>> y=long(x)[/color][/color]
    >Traceback (most recent call last):
    > File "<pyshell#9 >", line 1, in ?
    > y=long(x)
    >ValueError: invalid literal for long(): 0xe10ea210[color=green][color=darkred]
    >>>>[/color][/color]
    >
    >What am I doing wrong?
    >[/color]
    Need to supply base if converting string that is not base 10
    [color=blue][color=green][color=darkred]
    >>> long('123')[/color][/color][/color]
    123L[color=blue][color=green][color=darkred]
    >>> long('0xe10ea21 0',16)[/color][/color][/color]
    3775832592L


    Regards,
    Bengt Richter

    Comment

    • Scott David Daniels

      #3
      Re: python 2.2 string conversion ?

      ken wrote:[color=blue]
      > I've been looking for a solution to a string to long conversion problem that
      > I've run into[color=green][color=darkred]
      >>>>x = 'e10ea210'
      >>>>print x[/color][/color]
      > e10ea210[color=green][color=darkred]
      >>>>y=long(x)[/color][/color]
      >[/color]
      How about:
      y = long(x, 16)

      Comment

      • Gary Herron

        #4
        Re: python 2.2 string conversion ?

        >[color=blue][color=green][color=darkred]
        > >>> x="e10ea210"
        > >>> y=long(x)[/color][/color]
        >
        > Traceback (most recent call last):
        > File "<pyshell#7 >", line 1, in ?
        > y=long(x)
        > ValueError: invalid literal for long(): e10ea210[/color]
        [color=blue]
        > What am I doing wrong?[/color]

        You didn't specify what you are trying to do here, but I'll make a
        wild *guess* that the string in x is a hexadecimal (i.e., base 16)
        value. However, Python can't go around making such a guess, so you
        have to explicitly specify your radix (radix being another term for
        base) like this:
        [color=blue][color=green][color=darkred]
        >>> print long("e10ea210" ,16)[/color][/color][/color]
        3775832592

        or tell it to infer the radix from a '0x' prefix:
        [color=blue][color=green][color=darkred]
        >>> print long("0xe10ea21 0",0)[/color][/color][/color]
        3775832592

        Here are the relevant portions of the manual:

        long(x[, radix])

        Convert a string or number to a long integer. If the argument is a
        string, it must contain a possibly signed number of arbitrary size,
        possibly embedded in whitespace; this behaves identical to
        string.atol(x). The radix argument is interpreted in the same way as
        for int(), and may only be given when x is a string. Otherwise, the
        argument may be a plain or long integer or a floating point number,
        and a long integer with the same value is returned. Conversion of
        floating point numbers to integers truncates (towards zero).


        int(x[, radix])

        Convert a string or number to a plain integer. If the argument is a
        string, it must contain a possibly signed decimal number
        representable as a Python integer, possibly embedded in whitespace;
        this behaves identical to string.atoi(x[, radix]). The radix
        parameter gives the base for the conversion and may be any integer
        in the range [2, 36], or zero. If radix is zero, the proper radix is
        guessed based on the contents of string; the interpretation is the
        same as for integer literals. If radix is specified and x is not a
        string, TypeError is raised. Otherwise, the argument may be a plain
        or long integer or a floating point number. Conversion of floating
        point numbers to integers truncates (towards zero). If the argument
        is outside the integer range a long object will be returned instead.


        Gary Herron



        Comment

        • ken

          #5
          Re: python 2.2 string conversion ?

          It wasn't clear to me when I read the docs - I inferred that the long()
          built-in only took 1 parameter.

          Thanks everybody.

          "Gary Herron" <gherron@island training.com> wrote in message
          news:mailman.10 59027097.828.py [email protected] ...[color=blue][color=green]
          > >[color=darkred]
          > > >>> x="e10ea210"
          > > >>> y=long(x)[/color]
          > >
          > > Traceback (most recent call last):
          > > File "<pyshell#7 >", line 1, in ?
          > > y=long(x)
          > > ValueError: invalid literal for long(): e10ea210[/color]
          >[color=green]
          > > What am I doing wrong?[/color]
          >
          > You didn't specify what you are trying to do here, but I'll make a
          > wild *guess* that the string in x is a hexadecimal (i.e., base 16)
          > value. However, Python can't go around making such a guess, so you
          > have to explicitly specify your radix (radix being another term for
          > base) like this:
          >[color=green][color=darkred]
          > >>> print long("e10ea210" ,16)[/color][/color]
          > 3775832592
          >
          > or tell it to infer the radix from a '0x' prefix:
          >[color=green][color=darkred]
          > >>> print long("0xe10ea21 0",0)[/color][/color]
          > 3775832592
          >
          > Here are the relevant portions of the manual:
          >
          > long(x[, radix])
          >
          > Convert a string or number to a long integer. If the argument is a
          > string, it must contain a possibly signed number of arbitrary size,
          > possibly embedded in whitespace; this behaves identical to
          > string.atol(x). The radix argument is interpreted in the same way as
          > for int(), and may only be given when x is a string. Otherwise, the
          > argument may be a plain or long integer or a floating point number,
          > and a long integer with the same value is returned. Conversion of
          > floating point numbers to integers truncates (towards zero).
          >
          >
          > int(x[, radix])
          >
          > Convert a string or number to a plain integer. If the argument is a
          > string, it must contain a possibly signed decimal number
          > representable as a Python integer, possibly embedded in whitespace;
          > this behaves identical to string.atoi(x[, radix]). The radix
          > parameter gives the base for the conversion and may be any integer
          > in the range [2, 36], or zero. If radix is zero, the proper radix is
          > guessed based on the contents of string; the interpretation is the
          > same as for integer literals. If radix is specified and x is not a
          > string, TypeError is raised. Otherwise, the argument may be a plain
          > or long integer or a floating point number. Conversion of floating
          > point numbers to integers truncates (towards zero). If the argument
          > is outside the integer range a long object will be returned instead.
          >
          >
          > Gary Herron
          >
          >
          >
          >[/color]


          Comment

          Working...