• 软帝学院:java十进制、八进制、十六进制数互相转换


    java-十进制、八进制、十六进制数互相转换

    下面一个十进制、八进制、十六进制数互相转换的小程序

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    44

    45

    46

    47

    48

    49

    50

    51

    52

    53

    54

    55

    56

    57

    58

    59

    60

    61

    62

    63

    64

    65

    66

    67

    68

    69

    70

    71

    72

    73

    74

    75

    76

    77

    78

    79

    80

    81

    82

    83

    84

    85

    86

    87

    88

    89

    90

    91

    92

    93

    94

    95

    96

    97

    98

    99

    100

    101

    102

    103

    104

    105

    106

    107

    108

    109

    110

    111

    112

    113

    114

    115

    116

    117

    118

    119

    120

    121

    122

    123

    124

    125

    126

    127

    128

    129

    130

    131

    132

    133

    134

    135

    136

    137

    138

    139

    140

    141

    142

    143

    144

    145

    146

    147

    148

    149

    150

    151

    152

    153

    154

    155

    156

    157

    158

    159

    160

    161

    162

    163

    164

    165

    166

    167

    168

    169

    170

    171

    172

    173

    174

    175

    176

    177

    178

    179

    180

    181

    182

    183

    184

    185

    186

    187

    188

    189

    190

    191

    192

    193

    194

    195

    196

    197

    198

    199

    200

    201

    202

    203

    204

    205

    206

    207

    208

    209

    210

    211

    212

    213

    214

    215

    216

    217

    218

    219

    220

    221

    222

    223

    224

    225

    226

    227

    228

    229

    230

    231

    232

    233

    234

    235

    236

    237

    238

    239

    240

    241

    242

    243

    244

    245

    246

    247

    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

    喜欢这样文章的可以关注我,我会持续更新,你们的关注是我更新的动力!需要更多java学习资料的也可以私信我!

    祝关注我的人都:身体健康,财源广进,福如东海,寿比南山,早生贵子,从不掉发!

  • 相关阅读:
    未能导入activex控件,请确保它正确注册
    【OpenCV入门教程之一】 安装OpenCV:OpenCV 3.0、OpenCV 2.4.8、OpenCV 2.4.9 +VS 开发环境配置
    回调函数
    struct--------构造函数对结构体初始化的影响
    调用约定
    HDU 4923 Room and Moor
    Codeforces 260 C. Boredom
    Codeforces 260 B. Fedya and Maths
    Codeforces 260 A
    HNU 12888 Encryption(map容器)
  • 原文地址:https://www.cnblogs.com/heqingxiaohuo/p/12299202.html
Copyright © 2020-2023  润新知