преобразование шестнадцатеричных, восьмеричных чисел в десятичную форму с использованием скрипта Python - PullRequest
4 голосов
/ 15 июня 2010

Есть много встроенных функций, таких как int (восьмеричные), которые можно использовать для преобразования восьмеричных чисел в десятичные числа в командной строке, но они не работают в скрипте.int (0671) возвращает 0671 в скрипте, где он представляет десятичную форму восьмеричного числа в командной строке python.Помощь ???

Спасибо

Ответы [ 2 ]

12 голосов
/ 15 июня 2010

Здесь есть некоторая путаница - педантично (а с компьютерами всегда лучше педантично ;-), здесь нет "восьмеричных чисел", есть строки , которые являются восьмеричными представлениями чисел (и других встречающихся строк, которые являются их десятичными представлениями, шестнадцатеричными представлениями). Базовые числа (целые числа) являются совершенно отличным типом от любого из представлений (по умолчанию отображается их десятичное представление) - например ::

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

кавычки указывают на строки (то есть представления) - и отмечают, что, по сути, они не имеют ничего общего с числами, которые они могут представлять.

Итак, один из способов интерпретации вашего вопроса состоит в том, что вы хотите преобразовать восьмеричное представление в десятичное (и т. Д.) - это будет:

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

обратите внимание на кавычки (с указанием строк, то есть представлений). int(s, 8) преобразует строку s в целое число в виде восьмеричного представления (или вызывает исключение, если преобразование не может работать). str(n) создает строковую форму числа n (которое, как я уже говорил, по умолчанию является десятичным представлением).

2 голосов
/ 15 июня 2010

Во-первых, int () бесполезен. Вы можете просто набрать 0671.

Затем число сохраняется в двоичном виде на самом компьютере, вы только конвертируете его строковое представление. Сам номер не меняется. Таким образом, оба из них, например, преобразуются в True, что могло быть источником путаницы:

0671 == 0671
0671 == 441

Чтобы убедиться, что вы получите программу для вывода числа в нужной вам базе, самый простой способ - использовать форматирование строк, например (если вы хотите, чтобы оно было в базе 10):

print "%d" % 0671  # will output the number in base 10
...