views:

452

answers:

2

There are many inbulit functions like int(octal) which can be used to convert octal numbers into decimal numbers on command line but these doesn't work out in script . int(0671) returns 0671 in script, where as it represent decimal form of octal number on python command line. Help???

Thank You

+1  A: 

First, the int() is useless. You can just type 0671.

Then, the number is stored in binary on the computer itself, you are only converting its string representation. The number itself doesn't change. Therefore, both of these will resolve to True, for example, which might've been the source of confusion:

0671 == 0671
0671 == 441

To ensure you will get the program to output the number in the base you want, the simplest way is to use string formatting, like so (if you want it to be in base 10):

print "%d" % 0671  # will output the number in base 10
houbysoft
Note that just typing `0671` no longer works in Python 3; try `0o671` instead (which works for all versions later than 2.6).
Mark Dickinson
http://stackoverflow.com/questions/3045202/how-to-convert-string-0671-or-0x45-into-integer-form-with-0-and-0x-in-the-beg
Harshit Sharma
+2  A: 

There's some confusion here -- pedantically (and with computers it's always best to be pedantic;-), there are no "octal numbers", there are strings which are octal representations of numbers (and other strings, more commonly encountered, which are their decimal representations, hexadecimal representations). The underlying numbers (integers) are a totally distinct type from any of the representations (by default their decimal representation is shown) -- e.g.:

>>> 2 + 2
4
>>> '2' + '2'
'22'

the quotes indicate strings (i.e., representations) -- and note that, per se, they have nothing to do with the numbers they may be representing.

So, one way to interpret your question is that you want to convert an octal representation into a decimal one (etc) -- that would be:

>>> str(int('0671', 8))
'441'

note the quoted (indicating strings, i.e., representations). int(s, 8) converts the string s into an integer as an octal representation (or raises an exception if the conversion can't work). str(n) produces the string form of number n (which, as I mentioned, is by default a decimal representation).

Alex Martelli
http://stackoverflow.com/questions/3045202/how-to-convert-string-0671-or-0x45-into-integer-form-with-0-and-0x-in-the-beg
Harshit Sharma