Форум сайта python.su
Есть ли в Python стандартная возможность осуществить сабж или надо писать самому?
Офлайн
Можно так:
print “%o”%25
print “%x”%25
Офлайн
>>> i = 25
>>> oct(i)
'031'
>>> hex(i)
'0x19'
Офлайн
Гы! Вопрос то про ДВОИЧНУЮ систему был, про oct и hex и так известно (интересно нафига кому-нибудь может понадобиться восьмеричная система?).
Запрос в Google “binary numbers python” приводит к http://code.google.com/p/gmpy/
Офлайн
В кукбуке питоновском есть примерчик:
import string
def format(number, radix, digits=string.digits+string.ascii_lowercase):
""" format the given integer `number' in the given `radix' using the given
`digits' (default: digits and lowercase ascii letters) """
if not 2 <= radix <= len(digits):
raise ValueError, "radix must be in 2..%r, not %r" % (len(digits), radix)
# build result as a list of "digit"s in natural order (least-significant digit
# leftmost), at the end flip it around and join it up into a single string
result = [ ]
addon = result.append # extract bound-method once
# compute 'sign' (empty for number>=0) and ensure number >= 0 thereafter
sign = ''
if number < 0:
number = -number
sign = '-'
elif number == 0:
sign = '0'
_divmod = divmod # access to locals is faster
while number:
# like: rdigit = number % radix; number //= radix
number, rdigit = _divmod(number, radix)
# append appropriate string for the digit we just found
addon(digits[rdigit])
# append sign (if any), flip things around, and join up into a string
addon(sign)
result.reverse( )
return ''.join(result)
Отредактировано (Март 27, 2007 13:04:30)
Офлайн
StriverРаздаю права ;)
Гы! Вопрос то про ДВОИЧНУЮ систему был, про oct и hex и так известно (интересно нафига кому-нибудь может понадобиться восьмеричная система?).
Офлайн
ofigetitelnoДа, с этим разобрался самостоятельно. Вопрос решился написанием собственных функций. Вот они:
В десятичную, конструктором инта:
Офлайн
baluФункцию DigitToBin, естественно, можно написать проще, но тогда не будет работать OctToBin, может кому пригодиться…
Вопрос решился написанием собственных функций. Вот они:
Офлайн
Oct2Bin = {“0”:“000”,
“1”:“001”,
“2”:“010”,
“3”:“011”,
“4”:“100”,
“5”:“101”,
“6”:“110”,
“7”:“111”}
OctNumber = “172”
print “”.join(map(lambda x:Oct2Bin, list(OctNumber)))
Выводит на экран 001111010.
Аналогично для 16-тиричной системы. :)
Отредактировано (Март 28, 2007 01:32:53)
Офлайн