package com.wekture.oframe;

import java.math.BigInteger;

public class Test123 {

/**
   * 初始化 62 进制数据,索引位置代表字符的数值,比如 A代表10,z代表61等
   */
  private static String chars =
      "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ丰王井开夫天无元专云扎艺木五支厅不太犬区历尤友匹车巨牙屯比互切瓦止少日中冈贝内水见午牛手毛气升长仁什片仆化仇币仍仅斤爪反介父从今凶分乏公仓月氏勿欠风丹匀乌凤勾文六方火为斗忆订计户认心尺引丑巴孔队办以允予劝双书幻玉刊示末未击打巧正扑扒功扔去甘世古节本术可丙左厉右石布龙平灭轧东卡北占业旧帅归且旦目叶甲申叮电号田由史只央兄叼叫另叨叹四生失禾丘付仗代仙们仪白仔他斥瓜乎丛令用甩印乐句匆册犯外处冬鸟务包饥主市立闪兰半汁汇头汉宁穴它讨写让礼训必议讯记永司尼民出辽奶奴加召皮边发孕圣对台矛纠母幼丝式刑动扛寺吉扣考托老执巩圾扩扫地扬场耳共芒亚芝朽朴机权过臣再协西压厌在有百存而页匠夸夺灰达列死成夹轨邪划迈毕至此贞师尘尖劣光当早吐吓虫曲团同吊吃因吸吗屿帆岁回岂刚则肉网年朱先丢舌竹迁乔伟传乒乓休伍伏优伐延件任伤价份华仰仿伙伪自血向似后行舟全会杀合兆企众爷伞创肌朵杂危旬旨负各名多争色壮冲冰庄庆亦刘齐交次衣产决充妄闭问闯羊并关米灯州汗污江池汤忙兴宇守宅字安讲军许论农讽设访寻那迅尽导异孙阵阳收阶阴防奸如妇好她妈戏羽观欢买红纤级约纪驰巡寿弄麦形进戒吞远违运扶抚坛技坏扰拒找批扯址走抄坝贡攻赤折抓扮抢孝均抛投坟抗坑坊抖护壳志扭块声把报却劫芽花芹芬苍芳严芦劳克苏杆杠杜材村杏极李杨求更束豆两丽医辰励否还歼来连步坚旱盯呈时吴助县里呆园旷围呀吨足邮男困吵串员听吩吹呜吧吼别岗帐财针钉告我乱利秃秀私每兵估体何但伸作伯伶佣低你住位伴身皂佛近彻役返余希坐谷妥含邻岔肝肚肠龟免狂犹角删条卵岛迎饭饮系言冻状亩况床库疗应冷这序辛弃冶忘闲间闷判灶灿弟汪沙汽沃泛沟没沈沉怀忧快完宋宏牢究穷灾良证启评补初社识诉诊词译君灵即层尿尾迟局改张忌际陆阿陈阻附妙妖妨努忍劲鸡驱纯纱纳纲驳纵纷纸纹纺驴纽奉玩环武青责现表规抹拢拔拣担坦押抽拐拖拍者顶拆拥抵拘势抱垃拉拦拌幸招坡披拨择抬其取苦若茂苹苗英范直茄茎茅林枝杯柜析板松枪构杰述枕丧或画卧事刺枣雨卖矿码厕奔奇奋态欧垄妻轰顷转斩轮软到非叔肯齿些虎虏肾贤尚旺具果味昆国昌畅明易昂典固忠咐呼鸣咏呢岸岩帖罗帜岭凯败贩购图钓制知垂牧物乖刮秆和季委佳侍供使例版侄侦侧凭侨佩货依的迫质欣征往爬彼径所舍金命斧爸采受乳贪念贫肤肺肢肿胀朋股肥服胁周昏鱼兔狐忽狗备饰饱饲变京享店夜庙府底剂郊废净盲放刻育闸闹郑券卷单炒炊炕炎炉沫浅法泄河沾泪油泊沿泡注泻泳泥沸波泼泽治怖性怕怜怪学宝宗定宜审宙官空帘实试郎诗肩房诚衬衫视话诞询该详建肃录隶居届刷屈弦承孟孤陕降限妹姑姐姓始驾参艰线练组细驶织终驻驼绍经贯奏春帮珍玻毒型挂封持项垮挎城挠政赴赵挡挺括拴拾挑指垫挣挤拼挖按挥挪某甚革荐巷带草茧茶荒茫荡荣故胡南药标枯柄栋相查柏柳柱柿栏树要咸威歪研砖厘厚砌砍面耐耍牵残殃轻鸦皆背战点临览竖省削尝是盼眨哄显哑冒映星昨畏趴胃贵界虹虾蚁思蚂虽品咽骂哗咱响哈咬咳哪炭峡罚贱贴骨钞钟钢钥钩卸缸拜看矩怎牲选适秒香种秋科重复竿段便俩贷顺修保促侮俭俗俘信皇泉鬼侵追俊盾待律很须叙剑逃食盆胆胜胞胖脉勉狭狮独狡狱狠贸怨急饶蚀饺饼弯将奖哀亭亮度迹庭疮疯疫疤姿亲音帝施闻阀阁差养美姜叛送类迷前首逆总炼炸炮烂剃洁洪洒浇浊洞测洗活派洽染济洋洲浑浓津恒恢恰恼恨举觉宣室宫宪突穿窃客冠语扁袄祖神祝误诱说诵垦退既屋昼费陡眉孩除险院娃姥姨姻娇怒架贺盈勇怠柔垒绑绒结绕骄绘给络骆绝绞统耕耗艳泰珠班素蚕顽盏匪捞栽捕振载赶起盐捎捏埋捉捆捐损都哲逝捡换挽热恐壶挨耻耽恭莲莫荷获晋恶真框桂档桐株桥桃格校核样根索哥速逗栗配翅辱唇夏础破原套逐烈殊顾轿较顿毙致柴桌虑监紧党晒眠晓鸭晃晌晕蚊哨哭恩唤啊唉罢峰圆贼贿钱钳钻铁铃铅缺氧特牺造乘敌秤租积秧秩称秘透笔笑笋债借值倚倾倒倘俱倡候俯倍倦健臭射躬息徒徐舰舱般航途拿爹爱颂翁脆脂胸胳脏胶脑狸狼逢留皱饿恋桨浆衰高席准座脊症病疾疼疲效离唐资凉站剖竞部旁旅畜阅羞瓶拳粉料益兼烤烘烦烧烛烟递涛浙涝酒涉消浩海涂浴浮流润浪浸涨烫涌悟悄悔悦害宽家宵宴宾窄容宰案请朗诸读扇袜袖袍被祥课谁调冤谅谈谊剥恳展剧屑弱陵陶陷陪娱娘通能难预桑绢绣验继球理捧堵描域掩捷排掉堆推掀授教掏掠培接控探据掘职基著勒黄萌萝菌菜萄菊萍菠营械梦梢梅检梳梯桶救副票戚爽聋袭盛雪辅辆虚雀堂常匙晨睁眯眼悬野啦晚啄距跃略蛇累唱患唯崖崭崇圈铜铲银甜梨犁移笨笼笛符第敏做袋悠偿偶偷您售停偏假得衔盘船斜盒鸽悉欲彩领脚脖脸脱象够猜猪猎猫猛馅馆凑减毫麻痒痕廊康庸鹿盗章竟商族旋望率着盖粘粗粒断剪兽清添淋淹渠渐混渔淘液淡深婆梁渗情惜惭悼惧惕惊惨惯寇寄宿窑密谋谎祸谜逮敢屠弹随蛋隆隐婚婶颈绩绪续骑绳维绵绸绿瑞魂肆摄摸填搏塌鼓摆携搬摇搞塘摊蒜勤鹊蓝墓幕蓬蓄蒙蒸献禁楚想槐榆楼概赖酬感碍碑碎碰碗碌雷零雾雹输督龄鉴睛睡睬鄙愚暖盟歇暗照跨跳跪路跟遣蛾蜂嗓置罪罩错锡锣锤锦键锯矮辞稠愁筹签简毁舅鼠催傻像躲微愈遥腰腥腹腾腿触解酱痰廉新韵意粮数煎塑慈煤煌满漠源滤滥滔溪溜滚滨粱滩慎誉塞谨福群殿辟障嫌嫁叠缝缠静碧璃墙撇嘉摧截誓境摘摔聚蔽慕暮蔑模榴榜榨歌遭酷酿酸磁愿需弊裳颗嗽蜻蜡蝇蜘赚锹锻舞稳算箩管僚鼻魄貌膜膊膀鲜疑馒裹敲豪膏遮腐瘦辣竭端旗精歉熄熔漆漂漫滴演漏慢寨赛察蜜谱嫩翠熊凳骡缩琴斑替款堪搭塔越趁趋超提堤博揭喜插揪搜煮援裁搁搂搅握揉斯期欺联散惹葬葛董葡敬葱落朝辜葵棒棋植森椅椒棵棍棉棚棕惠惑逼厨厦硬确雁殖裂雄暂雅辈悲紫辉敞赏掌晴暑最量喷晶喇遇喊景践跌跑遗蛙蛛蜓喝喂喘喉幅帽赌赔黑铸铺链销锁锄锅锈锋锐短智毯鹅剩稍程稀税筐等筑策筛筒答筋筝傲傅牌堡集焦傍储奥街惩御循艇舒番释禽腊脾腔鲁猾猴然馋装蛮就痛童阔善羡普粪尊道曾焰港湖渣湿温渴滑湾渡游滋溉愤慌惰愧愉慨割寒富窜窝窗遍裕裤裙谢谣谦属屡强粥疏隔隙絮嫂登缎缓编骗缘";
  private static BigInteger scale = new BigInteger("2348", 10);

/**
   * 将数字转为62进制+458
   *
   * @param num Long 型数字
   * @param length 转换后的字符串长度,不足则左侧补0
   * @return 62进制字符串
   */
  public static String encode(BigInteger num) {
    StringBuilder sb = new StringBuilder();
    BigInteger remainder = new BigInteger("0", 10);

while (num.compareTo(scale.subtract(new BigInteger("1", 10))) == 1) {
      /**
       * 对 scale 进行求余,然后将余数追加至 sb 中,由于是从末位开始追加的,因此最后需要反转(reverse)字符串
       */
      remainder = num.mod(scale);
      int remainderInt = remainder.intValue();
      sb.append(chars.charAt(remainderInt));

num = num.divide(scale);
    }

sb.append(chars.charAt(num.intValue()));
    String value = sb.reverse().toString();
    return value;
  }

/**
   * 62进制字符串转为数字
   *
   * @param str 编码后的62进制字符串
   * @return 解码后的 10 进制字符串
   */
  public static BigInteger decode(String str) {
    /**
     * 将 0 开头的字符串进行替换
     */
    str = str.replace("^0*", "");
    BigInteger num = new BigInteger("0");
    int index = 0;
    for (int i = 0; i < str.length(); i++) {
      /**
       * 查找字符的索引位置
       */
      index = chars.indexOf(str.charAt(i));
      /**
       * 索引位置代表字符的数值
       */
      // num += (long)(index * (Math.pow(scale.longValue(), str.length() - i - 1)));
      BigInteger bigIndex = new BigInteger(index + "", 10);
      BigInteger temp = scale.pow(str.length() - i - 1);
      num = num.add(bigIndex.multiply(temp));

}

return num;
  }

/**
   * @param args 1316FmjUYeyZydnWzUBi6s16WmiZen
   */
  public static void main(String[] args) {
    String intStr =
        "11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111";
    intStr = intStr + intStr + intStr +intStr;
    System.out.println("62进制:" + encode(new BigInteger(intStr, 2)));
    System.out.println("10进制:" + decode(
        "s9zCnPkWj35ur8OIwpNsJEw$MoIG$$E87JLzeJ3K2eA1j^M1IQ-iIF6#vfgmb#Bg=0-Y&=Xqv2my1*lUv"));
    System.out.println((new BigInteger(intStr,2).toString(36)));
  }

}

通过BigInteger真正实现无限大的十进制转N(任意整数)进制相关推荐

  1. C++控制不同进制输出(二进制,八进制,十进制,十六进制)各种进制之间的转换

    目录 1.输出(头文件讲解) 2.格式控制 常用的I/O流控制符 4.各种进制之间的转换(进制大乱斗) 4.1.写在前面 4.2整体框架搭建 4.3菜单函数 4.4用户输入选择(main函数体中) 4 ...

  2. 练习:自撸整数进制转换器(二、八、十六进制转十进制)

    我的CSDN主页 My Python 学习个人备忘录 我的HOT博 整数进制转换器(二.八.十六进制转十进制) 题目 代码运行效果 我的解题思路 转换器完整代码 题目   跟着寒佬整数进制转换,生发自 ...

  3. 将任意的十进制整数转换成任意R进制数(R在2-16之间)

    在c语言中,编程实现将任意的十进制整数转换成任意R进制数(R在2-16之间),源码如下所示: #include <stdio.h> int main(){     void change( ...

  4. 将十进制有理数转化为m进制数(C语言实现)

    内容: 若将十进制有理数转换为r进制的数,应如何实现. 步骤: 1.算法分析: 进行算法分析前,首先需要了解一些进制转换的知识,十进制整数转换二制是采用"除2取余,逆序输出"的方法 ...

  5. 【C语言习题】将十进制的小数部分转base进制

    题目内容 利用"顺序队列"将十进制的小数部分转base进制(要考虑小数位保留位数). 个人解法 //由于本人已彻底从vs转到了vscode,且使用的是MinGW64编译环境,因此今 ...

  6. 进制转换(十进制n转化为k进制)

    一.十进制n转化为k进制 将十进制整数n(−231≤n≤231−1)转换成k(2≤k≤16)进制数.注意,10~15分别用字母A.B.C.D.E.F表示. 输入格式: 首先输入一个正整数T,表示测试数 ...

  7. 【进制转换】二进制,十进制,八进制,16进制

    1.二进制与十进制相互转换 二进制转为十进制 0000 0110转换为10进制: (二进制里面没有"个位.十位.百位",只能通过从左到右或者从右到左第几位来描述), 从右往左开始, ...

  8. c语言2进制16进制 表格,标题:整数进制转换(十六进制,十进制,二进制)--表格法...

    标题:整数进制转换(十六进制,十进制,二进制)--表格法 在计算机里,最基本的存储单位为字节(Byte,常说的大B),1个字节包含8位(bit,常说的小b).计算机的数据就是一个字节一个字节的形式存储 ...

  9. 使用栈实现十进制数转化为N进制数

    /*     使用栈求解及十进制数转化为N进制数 */ #include <iostream> #include <stack> using namespace std; vo ...

  10. 利用栈的基本操作,将一个十进制数转换成8进制数

    题目 利用栈的基本操作,将一个十进制数转换成8进制数 #include<iostream>using namespace std;#define MAXSIZE 100 typedef i ...

最新文章

  1. 为了解决伴随RIP协议的路由环路问题,可以采用水平分割法,这种方法的核心是(22),而反向毒化方法则是(23)。
  2. 模型越大,真的越香吗?千亿参数之后是万亿,万亿之后呢?
  3. a Line Segment Detector
  4. 第三次学JAVA再学不好就吃翔(part33)--final关键字
  5. Python日历模块| weekheader()方法与示例
  6. app软件测试是否强制升级_这些测试方法对于任何软件都必须是强制性的
  7. VS 2008中的jQuery Intellisense
  8. Linux中的docker login 与docker logout 命令
  9. “芯生力量,智能持久”出门问问全新发布TicWatch Pro 3
  10. JAVA反射构建对象
  11. LaTeX报错 Difference (2) between bookmark levels is greater (hyperref) than one, level fixed.
  12. HDOJ 1505 City Game
  13. sap后台配置原因代码_SAP FI后台配置清单
  14. 局域网中的通信协议及选择简述。
  15. 服务器搭建ftp共享文件夹,设置共享文件夹或者搭建FTP服务器。
  16. ECharts(三):柱状图柱体颜色渐变(每个柱体不同渐变色)
  17. 追踪货拉拉:“亡羊补牢”进度缓慢,安全“地雷”何时能拆完?
  18. studing(来自转载)
  19. PTA-天梯赛-7-8 GOGO冲
  20. Arthas、jprofiler使用

热门文章

  1. 傅里叶光学随机散斑原理 matlab仿真实现随机散斑
  2. 文件服务器存储解决方案探索
  3. 【如何选择到合适的天线-天线参数讲解 】
  4. 240万!动漫人脸数据集AnimeCeleb
  5. 面试评估表和评估指标雷达图(附模板下载)
  6. python飞机大战素材黑马_Python基础day12飞机大战(上)
  7. RS232与RS485协议原理及应用
  8. Nginx通过反向代理实现单端口访问多个服务
  9. matlab液体湿润模拟,【水文模型】01 三水源新安江模型
  10. linux tuxedo查看服务进程数,tuxedo常用命令