小猿圈分享-java-十进制、八进制、十六进制数互相转换

给大家分享一个可以节约我们时间的小程序,十进制、八进制、十六进制的互相转换,记得收藏哦。

public class JZTurn {

    public static void main(String[] args) {

        int num2 = 1314521;

        System.out.println("十进制数:"+num2);

        System.out.println("十进制转换二进制:"+turn2(num2));

        System.out.println("十进制转换八进制:"+turn8(num2));

        System.out.println("十进制转换十六进制:"+turn16(num2));


        //2-> 8

        System.out.println("二进制转换八进制:"+twoTurnEight(turn2(num2)));

        System.out.println("八进制转换二进制:"+eightTurnTwo(turn8(num2)));

        System.out.println("八进制转换十六进制:"+eightTurnSixteen(turn8(num2)));

        //2->16

        System.out.println("二进制转换十六进制:"+twoTurnSixteen(turn2(num2)));

    }


    /**

    * 10进制转二进制

    * @param num

    * @return

    */

    public static String turn2(int num){

        String shortTimeNum = "";

        int remainder = 0;

        /**

        * 模拟短除法

        */

        while(num >= 1){

            remainder = num % 2;

            num = num / 2;

            shortTimeNum = remainder + shortTimeNum;

        }


        return shortTimeNum;

    }


    /**

    * 10进制转8进制

    * @param num

    * @return

    */

    public static String turn8(int num){

        String shortTimeNum = "";

        int remainder = 0;

        /**

        * 模拟短除法

        */

        while(num >= 1){

            remainder = num % 8;

            num = num / 8;

            shortTimeNum = remainder + shortTimeNum;

        }


        return shortTimeNum;

    }


    /**

    * 10进制转16进制

    * @param num

    * @return

    */

    public static String turn16(int num){

        String shortTimeNum = "";

        int remainder = 0;

        String tempStr = "";

        /**

        * 模拟短除法

        */

        while(num >= 1){

            remainder = num % 16;

            tempStr = getOtherNum(remainder);


            num = num / 16;

            shortTimeNum = tempStr + shortTimeNum;

        }


        return shortTimeNum;

    }


    /**

    * 2进制转换8进制

    * 概念说明:这里转换的是整数,从右向左三位一组分别乘以2的零次方,2的一次方,2的2次方

    * 然后把每组中的数相加,再把各组从左向右拼接到一起

    * @param strNum2

    */

    public static String twoTurnEight(String strNum2){

        String resultNum = "";

        int remainder = strNum2.length() % 3;


        //补位 三位一组,最后一组位数不够用0补充

        switch(remainder){

        case 1:

            strNum2 = "00"+strNum2;

            break;

        case 2:

            strNum2 = "0"+strNum2;

            break;

        }

        int index = strNum2.length()-1;

        int tempNum1 = 0;

        int tempNum2 = 0;

        int tempNum3 = 0;

        while(index>=1){

            index -- ;


            if(index % 3 == 0){

                //每个数为一组

                tempNum1 = Integer.parseInt(strNum2.substring(index, index+1));

                tempNum2 = Integer.parseInt(strNum2.substring(index+1, index+2));

                tempNum3 = Integer.parseInt(strNum2.substring(index+2, index+3));


                resultNum = tempNum3*1+tempNum2*2+tempNum1*4+resultNum;


            }


        }


        return resultNum;

    }


    /**

    * 八进制转换二进制

    * @param eightNum

    * @return

    */

    public static String eightTurnTwo(String eightNum){

        String twoNum = "";

        int index = eightNum.length()-1;


        String tempNum = "";

        while(index>=0){


            tempNum = turn2(Integer.parseInt(eightNum.substring(index, index+1))) ;


            //补位,在转换8进制时是每三为二进制数为一组,转换回二进制时位数也需要是三位,不够用零补

            switch (tempNum.length()) {


            case 1:

                tempNum = "00"+tempNum;

                break;

            case 2:

                tempNum = "0"+tempNum;

                break;

            }


            twoNum = tempNum + twoNum;

            index--;

        }


        return twoNum;

    }


    /**

    * 2进制转换16进制

    * 概念说明:这里转换的是整数,从右向左四位一组分别乘以2的零次方,2的一次方,2的2次方,2的3次方,

    * 然后相加把每组最终的得数一次从左向右拼到一起,若其中一组的和大于9,按照对应关系转换后再把每组的结果拼接到一起

    * @param strNum2

    */

    public static String twoTurnSixteen(String strNum2){

        String resultNum = "";

        int remainder = strNum2.length() % 4;


        //补位,四位一组,最后一组位数不够用0补充

        switch(remainder){

        case 1:

            strNum2 = "000"+strNum2;

            break;

        case 2:

            strNum2 = "00"+strNum2;

            break;

        case 3:

            strNum2 = "0"+strNum2;

            break;

        }

        int index = strNum2.length()-1;

        int tempNum1 = 0;

        int tempNum2 = 0;

        int tempNum3 = 0;

        int tempNum4 = 0;

        int tempNum5 = 0;

        while(index>=1){

            index -- ;


            if(index % 4 == 0){

                //每个数为一组

                tempNum1 = Integer.parseInt(strNum2.substring(index, index+1));

                tempNum2 = Integer.parseInt(strNum2.substring(index+1, index+2));

                tempNum3 = Integer.parseInt(strNum2.substring(index+2, index+3));

                tempNum4 = Integer.parseInt(strNum2.substring(index+3, index+4));


                tempNum5 = tempNum4*1 + tempNum3*2+tempNum2*4+tempNum1*8;


                resultNum = getOtherNum(tempNum5) +resultNum;


            }


        }


        return resultNum;

    }


    /**

    * 8进制转换16进制

    * @param strNum2

    */

    public static String eightTurnSixteen(String strNum2){

        return twoTurnSixteen(eightTurnTwo(strNum2));

    }


    /**

    * 16进制转换中的特殊处理,需要把大于9的数字转换成字母

    * @param tempNum

    * @return

    */

    public static String getOtherNum(int tempNum){

        String tempStr = "";

        if(tempNum > 9){

            switch(tempNum){

            case 10:

                tempStr = "A";

                break ;

            case 11:

                tempStr = "B";

                break;

            case 12:

                tempStr = "C";

                break;

            case 13:

                tempStr = "D";

                break;

            case 14:

                tempStr = "E";

                break;

            case 15:

                tempStr = "F";

                break;

            }

        }else{

            tempStr = String.valueOf(tempNum);

        }

        return tempStr;

    }

}

输出结果:

十进制数:1314521

十进制转换二进制:101000000111011011001

十进制转换八进制:5007331

十进制转换十六进制:140ED9

二进制转换八进制:5007331

八进制转换二进制:101111011011001

八进制转换十六进制:5ED9

二进制转换十六进制:140ED9

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容

  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,674评论 0 38
  • 【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔...
    开心的锣鼓阅读 3,302评论 0 9
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young阅读 3,757评论 1 10
  • import Foundation print("1","2","3","4"); //输出多个字符串,并用“**...
    风的低语阅读 446评论 0 0
  • 我懦弱的存在 在这个美好的残酷的世界 有过希望,死了 有过梦想,埋了 终究只能懦弱的活着 为了保存的那种虚无缥缈的...
    我就是随便说说阅读 215评论 0 3