470,630 Members | 1,688 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 470,630 developers. It's quick & easy.

python 2.2 string conversion ?

ken
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
Jul 18 '05 #1
4 11006
On Thu, 24 Jul 2003 05:31:17 GMT, "ken" <ke********@earthlink.net> wrote:
I've been looking for a solution to a string to long conversion problem that
I've run into
x = 'e10ea210'
print xe10ea210 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 x0xe10ea210 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
Jul 18 '05 #2
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 e10ea210y=long(x)

How about:
y = long(x, 16)

Jul 18 '05 #3
>
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

Jul 18 '05 #4
ken
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" <gh*****@islandtraining.com> wrote in message
news:ma********************************@python.org ...
>> 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

Jul 18 '05 #5

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

18 posts views Thread by srijit | last post: by
2 posts views Thread by ajikoe | last post: by
reply views Thread by Kurt B. Kaiser | last post: by
1 post views Thread by gabriel.becedillas | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.