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