python 2.2 string conversion ?

K

ken

I've been looking for a solution to a string to long conversion problem that
I've run into
Traceback (most recent call last):
File "<pyshell#2>", line 1, in ?
y=long(x)
ValueError: invalid literal for long(): e10ea210Traceback (most recent call last):
File "<pyshell#5>", line 1, in ?
y=long(x)
ValueError: invalid literal for long(): 0xe10ea210Traceback (most recent call last):
File "<pyshell#7>", line 1, in ?
y=long(x)
ValueError: invalid literal for long(): e10ea210Traceback (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
 
B

Bengt Richter

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

Traceback (most recent call last):
File "<pyshell#2>", line 1, in ?
y=long(x)
ValueError: invalid literal for long(): e10ea210
Traceback (most recent call last):
File "<pyshell#5>", line 1, in ?
y=long(x)
ValueError: invalid literal for long(): 0xe10ea210
Traceback (most recent call last):
File "<pyshell#7>", line 1, in ?
y=long(x)
ValueError: invalid literal for long(): e10ea210
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
3775832592L


Regards,
Bengt Richter
 
G

Gary Herron

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:
3775832592

or tell it to infer the radix from a '0x' prefix:
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
 
K

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 said:
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:
3775832592

or tell it to infer the radix from a '0x' prefix:
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
 

Ask a Question

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

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,054
Latest member
TrimKetoBoost

Latest Threads

Top