>

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