python 2.2 string conversion ?

Discussion in 'Python' started by ken, Jul 24, 2003.

  1. ken

    ken Guest

    I've been looking for a solution to a string to long conversion problem that
    I've run into

    >>> x = 'e10ea210'
    >>> print x

    e10ea210
    >>> y=long(x)

    Traceback (most recent call last):
    File "<pyshell#2>", line 1, in ?
    y=long(x)
    ValueError: invalid literal for long(): e10ea210
    >>> x='0xe10ea210'
    >>> print x

    0xe10ea210
    >>> y=long(x)

    Traceback (most recent call last):
    File "<pyshell#5>", line 1, in ?
    y=long(x)
    ValueError: invalid literal for long(): 0xe10ea210
    >>> x="e10ea210"
    >>> y=long(x)

    Traceback (most recent call last):
    File "<pyshell#7>", line 1, in ?
    y=long(x)
    ValueError: invalid literal for long(): e10ea210
    >>> x="0xe10ea210"
    >>> y=long(x)

    Traceback (most recent call last):
    File "<pyshell#9>", line 1, in ?
    y=long(x)
    ValueError: invalid literal for long(): 0xe10ea210
    >>>


    What am I doing wrong?

    TIA
    ken, Jul 24, 2003
    #1
    1. Advertising

  2. On Thu, 24 Jul 2003 05:31:17 GMT, "ken" <> wrote:

    >I've been looking for a solution to a string to long conversion problem that
    >I've run into
    >
    >>>> x = 'e10ea210'
    >>>> print x

    >e10ea210
    >>>> y=long(x)

    >Traceback (most recent call last):
    > File "<pyshell#2>", line 1, in ?
    > y=long(x)
    >ValueError: invalid literal for long(): e10ea210
    >>>> x='0xe10ea210'
    >>>> print x

    >0xe10ea210
    >>>> y=long(x)

    >Traceback (most recent call last):
    > File "<pyshell#5>", line 1, in ?
    > y=long(x)
    >ValueError: invalid literal for long(): 0xe10ea210
    >>>> x="e10ea210"
    >>>> y=long(x)

    >Traceback (most recent call last):
    > File "<pyshell#7>", line 1, in ?
    > y=long(x)
    >ValueError: invalid literal for long(): e10ea210
    >>>> x="0xe10ea210"
    >>>> y=long(x)

    >Traceback (most recent call last):
    > File "<pyshell#9>", line 1, in ?
    > y=long(x)
    >ValueError: invalid literal for long(): 0xe10ea210
    >>>>

    >
    >What am I doing wrong?
    >

    Need to supply base if converting string that is not base 10

    >>> long('123')

    123L
    >>> long('0xe10ea210',16)

    3775832592L


    Regards,
    Bengt Richter
    Bengt Richter, Jul 24, 2003
    #2
    1. Advertising

  3. ken

    Gary Herron Guest

    >
    > >>> x="e10ea210"
    > >>> y=long(x)

    >
    > Traceback (most recent call last):
    > File "<pyshell#7>", line 1, in ?
    > y=long(x)
    > ValueError: invalid literal for long(): e10ea210


    > What am I doing wrong?


    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:

    >>> print long("e10ea210",16)

    3775832592

    or tell it to infer the radix from a '0x' prefix:

    >>> print long("0xe10ea210",0)

    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
    Gary Herron, Jul 24, 2003
    #3
  4. ken wrote:
    > I've been looking for a solution to a string to long conversion problem that
    > I've run into
    >>>>x = 'e10ea210'
    >>>>print x

    > e10ea210
    >>>>y=long(x)

    >

    How about:
    y = long(x, 16)
    Scott David Daniels, Jul 24, 2003
    #4
  5. ken

    ken Guest

    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" <> wrote in message
    news:...
    > >
    > > >>> x="e10ea210"
    > > >>> y=long(x)

    > >
    > > Traceback (most recent call last):
    > > File "<pyshell#7>", line 1, in ?
    > > y=long(x)
    > > ValueError: invalid literal for long(): e10ea210

    >
    > > What am I doing wrong?

    >
    > 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:
    >
    > >>> print long("e10ea210",16)

    > 3775832592
    >
    > or tell it to infer the radix from a '0x' prefix:
    >
    > >>> print long("0xe10ea210",0)

    > 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
    >
    >
    >
    >
    ken, Jul 24, 2003
    #5
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Alexander Eisenhuth
    Replies:
    5
    Views:
    531
    Bob Gailer
    Jul 25, 2003
  2. Replies:
    1
    Views:
    507
    Roman Yakovenko
    Dec 21, 2006
  3. ronysk
    Replies:
    0
    Views:
    469
    ronysk
    Aug 6, 2007
  4. Replies:
    10
    Views:
    1,449
    Gabriel Genellina
    Sep 17, 2007
  5. , India
    Replies:
    2
    Views:
    448
    Fraser Ross
    Sep 15, 2009
Loading...

Share This Page