Kotlin 生成随机激活码

Stars-one 2021年09月12日 23次浏览 本篇字数为1,025字

本文为作者原创,转载请注明出处,谢谢配合
作者:Stars-one
链接:https://stars-one.site/2021/09/12/generate-code


最近整个邮箱注册功能,需要生成激活码,封装了个生成随机激活码的方法

原理是利用ACSII码转为字符串,如a对应的ASCII是97,我们需要实现将97转为a即可

我们将所有对应的数字,大写字母,小写字母的ASCII码按照顺序存在一个ArrayList中

之后以此List的最大长度作为随机数的上限,每次获取随机的下标,获取list中的数据,将其转为String,之后拼凑起来即可获得String

代码如下

//num是生成的位数
fun generateCode(num: Int): String {
    //numList建议放在类中,不然每次调用方法每次都会创建List,会有资源浪费
    val numList = arrayListOf<Int>().apply {
        //数字(0-9)
        for (i in 30..39) {
            add(i)
        }
        //大写字母
        for (i in 65..90) {
            add(i)
        }
        //小写字母
        for (i in 97..122) {
            add(i)
        }
    }

    val size = numList.size
    val sb = StringBuffer()
    //循环六次(根据需要调整生成的位数)
    for (i in 0..5) {
        val random = Random.nextInt(size)
        val item = numList[random]
        //下标0-9对应的也是数字0-9
        val str = if (random in 0..9) {
            random.toString()
        } else {
            //转为字符串
            String(byteArrayOf(item.toByte()))
        }
        sb.append(str)
    }
    return sb.toString()
}