Форум сайта python.su
перевернул интернет в поиске ответа на данный вопрос.
нашел лишь одну реализацию:
def hex2dec(s):
“”“return the integer value of a hexadecimal string s”“”
return int(s, 16)
но она работает только при длинне НЕХа до 7ми символов включительно..
может что подскажите?
Офлайн
CODeRUSв мене працює для всіх чисел
но она работает только при длинне НЕХа до 7ми символов включительно..
>>> int('FFFFFFFFFFFFFFFF', 16)
18446744073709551615L
>>>
>>> int('00000000000011111111', 16)
286331153
>>>
>>> long('ff', 16)
255L
Отредактировано (Авг. 17, 2008 20:25:27)
Офлайн
ну да, я так и думал. Просто дело в том, что у меня Python for S60 1.4.2 Final (Версия для Symbian смартфонов :-[)
Офлайн
И в чем проблема с портом для смартов? Сейчас проверил, все работает (кстати, давно пора обновиться до 1.4.4). Питон, он и в африке питон. А симбиан, это тоже 32 битная система
Отредактировано (Авг. 18, 2008 09:42:20)
Офлайн
обновился. проблема осталась
7 знаков переводит, а 8 уже нет.
Офлайн
скажи а, что ты потом хочеш с этим числом делать ?
если просто куданить передать то можно в сыром формате raw='0123456789ABSDEF'.decode('hex')
а hex2dec - она для обычных чисел 4 байта и всё если не ошибаюсь
Офлайн
ну или решить в лоб проблему :)
hex_dig='0123456789ABCDEF'
h='AC987FF00123AA'
hi=0
for i in h: hi=(hi<<4)+hex_dig.find(i)
print hi
Офлайн
с данными… перевести вводимый hex в dec (int) для использования в математической функции
ps^ это:
hex_dig='0123456789ABCDEF'
h='AC987FF00123AA'
hi=0
for i in h: hi=(hi<<4)+hex_dig.find(i)
print hi
выдает правильный результат при длине hex-a до 7ми символов. походу это и есть та int(… ) функция?
Офлайн
тогда первый метод не пойдёт
вероятно это особенность работы питона под Symbian, точнее ограничение платформы
ты не сможеш использовать HEX числа больше чем 3,5 байта, последние 4 бита нельзя записать, ИМХО потому что в последнем бите хранится знаковый флаг, возможно ещё чтото
так что ограничивай свои потребности
Офлайн
а что выдает при 8 ми символах ? отрицательное число ?
Офлайн