[PYTHON]26进制(A-Z)与10进制互相转换

应用场景

把数据库中的数据导入固定模板的EXCEL文件中,有多个模板,不确定列,而且需要分区导出;

 


sequence = list(map(lambda x: chr(x), range(ord('A'), ord('Z') + 1)))


def ten2TwentySix(num):
    L = []
    if num > 25:
        while True:
            d = int(num / 26)
            remainder = num % 26
            if d <= 25:
                L.insert(0, sequence[remainder])
                L.insert(0, sequence[d - 1])
                break
            else:
                L.insert(0, sequence[remainder])
                num = d - 1
    else:
        L.append(sequence[num])

    return "".join(L)


def twentySix2Ten(s):
    l = len(s)
    sum = 0
    if l > 1:
        for i in range(l - 1):
            index = sequence.index(s[i])
            print(index)
            num = pow(26, l - 1) * (index + 1)
            print(num)
            l = l - 1
            sum = sum + num
        sum = sum + sequence.index(s[-1])
    else:
        sum = sum + sequence.index(s[-1])
    return sum


if __name__ == '__main__':
    print(ten2TwentySix(25))
    print(twentySix2Ten('Z'))

 

你可能感兴趣的:(PYTHON)