高分悬赏,Java大老来回答,怎么使用Java编程将20位数字压缩到5位作为唯一密码,并且可以还原。
1条回答 默认 最新
- Kim_小星兴 2020-01-13 09:51关注
老哥~62进制也帮不了你
62进制只能将20位的数字转化成12位的,如果要无损压缩那就需要上 10000进制,起码在利用进制压缩这个方面我帮不了你了.
这个是十进制转62进制的代码 z>a>Z>A>9>0String NumCompression(String bignum) { BigInteger num = new BigInteger(bignum); // System.out.println("原始数据为" + num + "; 36进制 为:" + num.toString(36)); // 实现62进制 0-9:A-Z:a-z 共62位 String ret = ""; while (num.equals(BigInteger.ZERO) == false) { BigInteger p = num.mod(new BigInteger("62")); // System.out.println("p = " + p); if (p.intValue() < 10) { char a = (char) ('0' + p.intValue()); ret = a + ret; } else if (p.intValue() < 37) { char a = (char) ('A' + p.intValue() - 10); ret = a + ret; } else if (p.intValue() < 62) { char a = (char) ('a' + p.intValue() - 36); ret = a + ret; } num = num.divide(new BigInteger("62")); } return ret; } String NumDecompression(String littleNum) { // String ret = ""; BigInteger num = BigInteger.ZERO; for (int i = 0; i < littleNum.length(); i++) { num = num.multiply(new BigInteger("62")); int value = 0; if (littleNum.charAt(i) >= '0' && littleNum.charAt(i) <= '9') { value = (int) (littleNum.charAt(i) - '0'); } else if (littleNum.charAt(i) >= 'A' && littleNum.charAt(i) <= 'Z') { value = 10 + (int) (littleNum.charAt(i) - 'A'); } else if (littleNum.charAt(i) >= 'a' && littleNum.charAt(i) <= 'z') { value = 36 + (int) (littleNum.charAt(i) - 'a'); } num = num.add(new BigInteger(value + "")); } return num.toString(); }
以下是原答案
emm~~小哥,如果你指的是将20位数字压缩成5位数字且可以还原,那基本做不到,不管怎么做 5位数字最多能表示的情况也就100000 (10万)中,得到后还得要复原原来的信息
也就是说是无损压缩,这就是不可能的,但是如果可以显示大小写字符的话,事情就还有救~
比如说: 十进制255,3位数,十六进制就是 0xFF,两位数,16进制不够就26进制,26进制不够就36进制,36进制是现在能表示的最大的进制(统一而言)也就是 0-9加上26个字母都用上了,
如果还是不够砸办?没关系~我们把大小写区分一下,搞一个 62进制,应该就可以了~你可以试一下看看~如果不知道怎么下手~评论一下,我帮你实现 20位字符串 to 5位字符串解决 1无用
悬赏问题
- ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
- ¥15 模糊pid与pid仿真结果几乎一样
- ¥15 java的GUI的运用
- ¥15 Web.config连不上数据库
- ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
- ¥15 怎么配置广告联盟瀑布流
- ¥15 Rstudio 保存代码闪退
- ¥20 win系统的PYQT程序生成的数据如何放入云服务器阿里云window版?
- ¥50 invest生境质量模块
- ¥15 nhanes加权logistic回归,svyglm函数