Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 17, 2008 19:25:10

CODeRUS
От:
Зарегистрирован: 2008-08-17
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

как реализовать hextoint?

перевернул интернет в поиске ответа на данный вопрос.
нашел лишь одну реализацию:
def hex2dec(s):
“”“return the integer value of a hexadecimal string s”“”
return int(s, 16)
но она работает только при длинне НЕХа до 7ми символов включительно..
может что подскажите?



Офлайн

#2 Авг. 17, 2008 20:22:59

crchemist
От:
Зарегистрирован: 2008-07-09
Сообщения: 379
Репутация: +  0  -
Профиль   Отправить e-mail  

как реализовать hextoint?

CODeRUS
но она работает только при длинне НЕХа до 7ми символов включительно..
в мене працює для всіх чисел
>>> int('FFFFFFFFFFFFFFFF', 16)
18446744073709551615L
>>>
Тільки повертає для більших чисел long замість int. Це залежить не від довжини стрічки а від величини числа - для типу інт- це 2147483599 .
ось стрічка на багато символів і всьо гут
>>> int('00000000000011111111', 16)
286331153
>>>
Ще є long

>>> long('ff', 16)
255L



Отредактировано (Авг. 17, 2008 20:25:27)

Офлайн

#3 Авг. 18, 2008 04:48:09

CODeRUS
От:
Зарегистрирован: 2008-08-17
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

как реализовать hextoint?

ну да, я так и думал. Просто дело в том, что у меня Python for S60 1.4.2 Final (Версия для Symbian смартфонов :-[)



Офлайн

#4 Авг. 18, 2008 09:41:43

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

как реализовать hextoint?

И в чем проблема с портом для смартов? Сейчас проверил, все работает (кстати, давно пора обновиться до 1.4.4). Питон, он и в африке питон. А симбиан, это тоже 32 битная система



Отредактировано (Авг. 18, 2008 09:42:20)

Офлайн

#5 Авг. 18, 2008 12:24:09

CODeRUS
От:
Зарегистрирован: 2008-08-17
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

как реализовать hextoint?

обновился. проблема осталась
7 знаков переводит, а 8 уже нет.



Офлайн

#6 Авг. 18, 2008 12:28:33

evgenyl
От:
Зарегистрирован: 2008-07-22
Сообщения: 148
Репутация: +  0  -
Профиль   Отправить e-mail  

как реализовать hextoint?

скажи а, что ты потом хочеш с этим числом делать ?
если просто куданить передать то можно в сыром формате raw='0123456789ABSDEF'.decode('hex')
а hex2dec - она для обычных чисел 4 байта и всё если не ошибаюсь



Офлайн

#7 Авг. 18, 2008 12:39:50

evgenyl
От:
Зарегистрирован: 2008-07-22
Сообщения: 148
Репутация: +  0  -
Профиль   Отправить e-mail  

как реализовать hextoint?

ну или решить в лоб проблему :)

hex_dig='0123456789ABCDEF'
h='AC987FF00123AA'
hi=0
for i in h: hi=(hi<<4)+hex_dig.find(i)
print hi



Офлайн

#8 Авг. 18, 2008 12:54:50

CODeRUS
От:
Зарегистрирован: 2008-08-17
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

как реализовать hextoint?

с данными… перевести вводимый 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(… ) функция?



Офлайн

#9 Авг. 18, 2008 13:13:33

evgenyl
От:
Зарегистрирован: 2008-07-22
Сообщения: 148
Репутация: +  0  -
Профиль   Отправить e-mail  

как реализовать hextoint?

тогда первый метод не пойдёт
вероятно это особенность работы питона под Symbian, точнее ограничение платформы
ты не сможеш использовать HEX числа больше чем 3,5 байта, последние 4 бита нельзя записать, ИМХО потому что в последнем бите хранится знаковый флаг, возможно ещё чтото
так что ограничивай свои потребности



Офлайн

#10 Авг. 18, 2008 13:15:15

evgenyl
От:
Зарегистрирован: 2008-07-22
Сообщения: 148
Репутация: +  0  -
Профиль   Отправить e-mail  

как реализовать hextoint?

а что выдает при 8 ми символах ? отрицательное число ?



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version