LoginSignup
2
3

More than 5 years have passed since last update.

Pythonで短縮URL的な文字列を出す

Last updated at Posted at 2015-10-13

元ネタどこか忘れたけど、どこかに落ちてたRubyかなんかのコードを移植。

# -*- coding: utf-8 -*-

"""
convert_tableは、文字のリスト。
このリストを使って基数変換する。
リストの長さが62だったら、62進数に変換する感じ。
intは、10進数で入れる。
"""

import math


def string_to_int(target, convert_table):

    def char_to_int(char):
        return convert_table.index(char)

    int_result = 0
    target = [char for char in target]
    target.reverse()
    for index, char in enumerate(target):
        int_result += char_to_int(char) * int(math.pow(len(convert_table), index))

    return int_result


def int_to_string(target, convert_table):

    def int_to_char(int_value):
        return convert_table[int_value]

    string_result = ""
    while target > 0:
        string_result = int_to_char(target % len(convert_table)) + string_result
        target /= len(convert_table)

    return string_result


def generate_convert_table():
    convert_table_base = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
    convert_table_base_list = list(convert_table_base)
    import random
    random.shuffle(convert_table_base_list)
    return "".join(convert_table_base_list)
2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3