首页 > 解决方案 > 在 Counter 类的 toChar 方法中从数字 3844 到 3905 中获取值 9a 到 99

问题描述

如果您在输出中查看 to 的预期值3844应该39059ato99但结果是aato a9。请帮助我如何解决这个问题并将 to 的值3844变为to 。39059a99

代码

class Counter {

    constructor(charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789") {
        this.charset = charset
    }

    setCharset(charset) {
        this.charset = charset
    }

    charsetArray() {
        return this.charset.split("");
    }

    zeroOccurence(n) {
        n = +Number(n) || 0;
        var s = String(n);
        return (s.match(/0/g) || []).length;
    }

    toChar(i) {
        i = +Number(i) || 0;
        var res = "", zeros = "";
        var c = this.charsetArray()     // chartset array
        var n = c.length                // chartset length
        var bT = n, bC = i;
        var tIc;
        while (Math.floor(bC / bT) >= 1 && Math.floor(bC / (bT * n)) >= 1) bT *= n;
        while (bC > (n - 1)) {
            tIc = Math.floor(bC / bT)

            if (tIc >= 0) {
                res += c[tIc - 1]
                bC -= tIc * bT
            } else {
                console.log('e', tIc)
                res += c[0]
            }

            if (bC > (n - 1) && bC > 0) {
                bT /= n
            } else {
                break
            }
        }
        res += c[bC]
        console.log(i, res)
        return res;
    }
}

测试运行

const c = new Counter();
const delay = (ms) => {
    return new Promise(resolve => setTimeout(resolve, ms));
}
const x = async (c) => {
    var r = 3782
    while (true) {
        await delay(1)
        c.toChar(r)
        r++
        if (r == 3913) {
            break
        }
    }
}


x(c)

输出

3782 8a
3783 8b
3784 8c
3785 8d
3786 8e
3787 8f
3788 8g
3789 8h
3790 8i
3791 8j
3792 8k
3793 8l
3794 8m
3795 8n
3796 8o
3797 8p
3798 8q
3799 8r
3800 8s
3801 8t
3802 8u
3803 8v
3804 8w
3805 8x
3806 8y
3807 8z
3808 8A
3809 8B
3810 8C
3811 8D
3812 8E
3813 8F
3814 8G
3815 8H
3816 8I
3817 8J
3818 8K
3819 8L
3820 8M
3821 8N
3822 8O
3823 8P
3824 8Q
3825 8R
3826 8S
3827 8T
3828 8U
3829 8V
3830 8W
3831 8X
3832 8Y
3833 8Z
3834 80
3835 81
3836 82
3837 83
3838 84
3839 85
3840 86
3841 87
3842 88
3843 89
3844 aa
3845 ab
3846 ac
3847 ad
3848 ae
3849 af
3850 ag
3851 ah
3852 ai
3853 aj
3854 ak
3855 al
3856 am
3857 an
3858 ao
3859 ap
3860 aq
3861 ar
3862 as
3863 at
3864 au
3865 av
3866 aw
3867 ax
3868 ay
3869 az
3870 aA
3871 aB
3872 aC
3873 aD
3874 aE
3875 aF
3876 aG
3877 aH
3878 aI
3879 aJ
3880 aK
3881 aL
3882 aM
3883 aN
3884 aO
3885 aP
3886 aQ
3887 aR
3888 aS
3889 aT
3890 aU
3891 aV
3892 aW
3893 aX
3894 aY
3895 aZ
3896 a0
3897 a1
3898 a2
3899 a3
3900 a4
3901 a5
3902 a6
3903 a7
3904 a8
3905 a9
3906 aaa
3907 aab
3908 aac
3909 aad
3910 aae
3911 aaf
3912 aag

标签: javascript

解决方案


推荐阅读