Найти - Пользователи
Полная версия: как реализовать hextoint?
Начало » Python для экспертов » как реализовать hextoint?
1 2
CODeRUS
перевернул интернет в поиске ответа на данный вопрос.
нашел лишь одну реализацию:
def hex2dec(s):
“”“return the integer value of a hexadecimal string s”“”
return int(s, 16)
но она работает только при длинне НЕХа до 7ми символов включительно..
может что подскажите?
crchemist
CODeRUS
но она работает только при длинне НЕХа до 7ми символов включительно..
в мене працює для всіх чисел
>>> int('FFFFFFFFFFFFFFFF', 16)
18446744073709551615L
>>>
Тільки повертає для більших чисел long замість int. Це залежить не від довжини стрічки а від величини числа - для типу інт- це 2147483599 .
ось стрічка на багато символів і всьо гут
>>> int('00000000000011111111', 16)
286331153
>>>
Ще є long

>>> long('ff', 16)
255L
CODeRUS
ну да, я так и думал. Просто дело в том, что у меня Python for S60 1.4.2 Final (Версия для Symbian смартфонов :-[)
igor.kaist
И в чем проблема с портом для смартов? Сейчас проверил, все работает (кстати, давно пора обновиться до 1.4.4). Питон, он и в африке питон. А симбиан, это тоже 32 битная система
CODeRUS
обновился. проблема осталась
7 знаков переводит, а 8 уже нет.
evgenyl
скажи а, что ты потом хочеш с этим числом делать ?
если просто куданить передать то можно в сыром формате raw='0123456789ABSDEF'.decode('hex')
а hex2dec - она для обычных чисел 4 байта и всё если не ошибаюсь
evgenyl
ну или решить в лоб проблему :)

hex_dig='0123456789ABCDEF'
h='AC987FF00123AA'
hi=0
for i in h: hi=(hi<<4)+hex_dig.find(i)
print hi
CODeRUS
с данными… перевести вводимый 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(… ) функция?
evgenyl
тогда первый метод не пойдёт
вероятно это особенность работы питона под Symbian, точнее ограничение платформы
ты не сможеш использовать HEX числа больше чем 3,5 байта, последние 4 бита нельзя записать, ИМХО потому что в последнем бите хранится знаковый флаг, возможно ещё чтото
так что ограничивай свои потребности
evgenyl
а что выдает при 8 ми символах ? отрицательное число ?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB