Closed a-leyi closed 1 month ago
JDK版本: corretto-21.0.2 hutool版本: 5.8.28
// 生成雪花ID String snowflakeNextIdStr = IdUtil.getSnowflakeNextIdStr(); System.out.println(Base62.encode(snowflakeNextIdStr)); // 假设:snowflakeNextIdStr = "1800774833102905344" // 输出:1hS2UR6CMkY3zQYf386ltqhtEi
https://www.hutool.cn/docs/#/core/Codec编码/Base62编码解码-Base62?id=base62编码解码-base62
根据文档所说,可以用于短URL生成,我想将雪花ID进行长度缩短,但是并未达到效果,反而是更长了,但是我用gpt的代码,确实是缩短了,为什么hutool提供的Base62.encode是这种结果呢,我看源码但是看不太懂,我不清楚这是不是个问题,所以来请教一下
以下代码gpt生成 private static final String BASE62 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; public static String base62Encode(BigInteger value) { StringBuilder result = new StringBuilder(); BigInteger base = BigInteger.valueOf(62); while (value.compareTo(BigInteger.ZERO) > 0) { BigInteger[] divmod = value.divideAndRemainder(base); result.insert(0, BASE62.charAt(divmod[1].intValue())); value = divmod[0]; } return result.toString(); } // 假设:snowflakeNextIdStr = "1800774833102905344" // 输出:291ZCmHJVhY
你可以找下几个在线工具,生成都没这么短的。
区别是GPT生成的以数字为基准,即把你的ID作为数字计算,结果肯定小。
Hutool把你的ID按照字符串对待了。
关联 gitee 的 issue https://gitee.com/dromara/hutool/issues/I8SPAG#note_24130945
谢谢大佬们,gitee中的这篇文章中解释也很清晰,学习到了
版本情况
JDK版本: corretto-21.0.2 hutool版本: 5.8.28
问题描述(包括截图)
https://www.hutool.cn/docs/#/core/Codec编码/Base62编码解码-Base62?id=base62编码解码-base62
根据文档所说,可以用于短URL生成,我想将雪花ID进行长度缩短,但是并未达到效果,反而是更长了,但是我用gpt的代码,确实是缩短了,为什么hutool提供的Base62.encode是这种结果呢,我看源码但是看不太懂,我不清楚这是不是个问题,所以来请教一下