LINUX.ORG.RU

[python] помогите найти в гугле - int в псевдохеш и обратно

 


0

0

подскажите, что ввести в гугле чтоб найти python библиотечку, которая int кодирует в наиболее мелкую строку, типа 123434 в 2d23s (как на сервисах сокращения ссылок всяких) и обратно.
как это вообще назвать правильно?

> чтоб найти python библиотечку, которая int кодирует в наиболее мелкую строку, типа

Зачем тебе друг мой кодирвать int в hash, если ты сможешь внятно объяснить, я готов упоить тебя пивом ))) Расскажи нам, нам так интересно))) А ты вообще в курсе ао сколько байт помещается int?

shelA
()
Ответ на: комментарий от ntp

С каких пор base64 сокращает запись int'а? Насколько я понимаю, ему нужна функция, обратная int(str, base). В гугле мегатонны примеров таких функций валяются.

balodja ★★★
()
Ответ на: комментарий от balodja

С тех пор, как использует более широкий диапазон символов для кодирования, чем десятичная система, не?

anonymous
()
Ответ на: комментарий от balodja

Еще один школьник вылез.

> которая int кодирует в наиболее мелкую строку, типа 123434 в 2d23s (как на сервисах сокращения ссылок всяких)

Читай исходное сообщение, много думай.

ntp
()

если в строку, то на С++ это бы выглядело так:

string str = base85( &n, sizeof( n ) );

ahonimous
()
def char_range(a, b):
    return map(chr, range(ord(a), ord(b) + 1))

_symbols = char_range('0', '9') + char_range('a', 'z') + char_range('A', 'Z')
def encode(num, base):
    result = ''
    while num > 0:
        num, mod = num / base, num % base
        result = _symbols[mod] + result
    return result
tarc
()
Ответ на: комментарий от tarc

Выучите уже язык, не позорьтесь.

> _symbols = char_range('0', '9') + char_range('a', 'z') + char_range('A', 'Z')

import string
_symbols = string.ascii_letters + string.digits

> num, mod = num / base, num % base

num, mod = divmod(num, base)

Ну и:

assert encode(0, 10) == '0'  # Fail
assert encode(-1, 10) == '-1'  # Fail
assert encode(10, 99) == '10'  # Fail
ntp
()
Ответ на: Выучите уже язык, не позорьтесь. от ntp

Ой как толсто.

import string

_symbols = string.ascii_letters + string.digits



num, mod = divmod(num, base)


Новичка это только смутит.

assert encode(0, 10) == '0' # Fail

assert encode(-1, 10) == '-1' # Fail


assert encode(10, 99) == '10' # Fail



Моей целью было не решить задачу ТС за него, а указать ему направление, что я и сделал.

tarc
()
Ответ на: Еще один школьник вылез. от ntp

Думаешь, что после того, как ты узнал про base64, ты перестал быть школьником, а все остальные вокруг вдруг ими стали?

balodja ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.