zoukankan      html  css  js  c++  java
  • 进制转换

    进制转换

           世界上只有两种秘密,骗自己的和以为能骗住别人的。

    背景:Java 在线编程机试刷题。

    题目描述:

    写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。(多组同时输入 )

    输入描述:

    输入一个十六进制的数值字符串。

    输出描述:

    输出该数值的十进制字符串。

    示例1:

    输入:

    0xA

    输出:

    10

    Java代码:

     1 import java.util.Scanner;
     2 public class Main{
     3     
     4     private static final String A = "A";
     5     private static final String B = "B";
     6     private static final String C = "C";
     7     private static final String D = "D";
     8     private static final String E = "E";
     9     private static final String F = "F";
    10     
    11     private static int changeBinary(String input){
    12         int length = input.length();
    13         int num = length - 2;
    14         int tenBinaryResult = 0;
    15         int [] binaryArray = new int [num];
    16         for(int i = 0; i < num; i++){
    17             String singleBinary = input.substring(i+2, i+3);
    18             switch(singleBinary){
    19                 case A:
    20                     binaryArray[i] = 10;
    21                     break;
    22                 case B:
    23                     binaryArray[i] = 11;
    24                     break;
    25                 case C:
    26                     binaryArray[i] = 12;
    27                     break;
    28                 case D:
    29                     binaryArray[i] = 13;
    30                     break;
    31                 case E:
    32                     binaryArray[i] = 14;
    33                     break;
    34                 case F:
    35                     binaryArray[i] = 15;
    36                     break;
    37                 default:
    38                     binaryArray[i] = Integer.parseInt(singleBinary);
    39             }
    40             double singleResult = binaryArray[i] * Math.pow(16, num - i -1);
    41             tenBinaryResult += singleResult;
    42         }
    43         return tenBinaryResult;
    44     }
    45     
    46     public static void main(String [] args){
    47         Scanner scanner = new Scanner(System.in);
    48         while(scanner.hasNext()){
    49            String input = scanner.nextLine();
    50            int output = changeBinary(input);
    51            System.out.println(output);
    52         }
    53     }
    54     
    55 }

    输出验证:

    本地IDEA 验证:

     1 package com.ausclouds.bdbsec.tjt;
     2 
     3 
     4 import java.util.Scanner;
     5 
     6 /**
     7  * @author tjt
     8  * @time 2020-9-6
     9  * @desc 进制转换:
    10  * 十六进制数采用表示16个符号来表示0~15,其中0~9就用0~9来表zhi示,形式相同,
    11  * 但10~15却必须用1个符号而不是两个符号来表示,于是就用A~F(小写a~f也行)来表示10~15了:
    12  * 10 -> A,11 -> B,12 -> C,13 -> D,14 -> E,15 -> F。
    13  * 将十六进制数转换成十进制数的话,就将每一位的十六进制数码(0~9和A~F)先转换成十进制数码(0~15),
    14  * 再将其乘以该数码所在位置的位权,并将其相加就可以。例如:
    15  * 十六进制数0x2AD5,前缀0x是用来表示十六进制数的
    16  * 0x2AD5 = 2*16^3 + 10*16^2 + 13*16^1 + 5*16^0 = 8192 + 2560 + 208 + 5 = 10965。
    17  */
    18 public class Main {
    19 
    20     private static final String A = "A";
    21     private static final String B = "B";
    22     private static final String C = "C";
    23     private static final String D = "D";
    24     private static final String E = "E";
    25     private static final String F = "F";
    26 
    27     /**
    28      * changeBinary
    29      * @param input
    30      * @return
    31      */
    32     private static int changeBinary(String input) {
    33         int length = input.length();
    34         // 输入格式为:0xA,剔除"0x"所占用的空间: length -2。
    35         int num = length - 2;
    36         int tenBinaryResult = 0;
    37         int[] binaryArray = new int[num];
    38         for (int i = 0; i < num; i++) {
    39             // 去掉"0x"两个字符,直接截取"A"。
    40             String singleBinary = input.substring(i + 2, i + 3);
    41             switch (singleBinary) {
    42                 // 匹配十六进制
    43                 case A:
    44                     binaryArray[i] = 10;
    45                     break;
    46                 case B:
    47                     binaryArray[i] = 11;
    48                     break;
    49                 case C:
    50                     binaryArray[i] = 12;
    51                     break;
    52                 case D:
    53                     binaryArray[i] = 13;
    54                     break;
    55                 case E:
    56                     binaryArray[i] = 14;
    57                     break;
    58                 case F:
    59                     binaryArray[i] = 15;
    60                     break;
    61                 default:
    62                     binaryArray[i] = Integer.parseInt(singleBinary);
    63             }
    64             // 转换为十进制 : 乘以该数码所在位置的位权
    65             double singleResult = binaryArray[i] * Math.pow(16, num - i - 1);
    66             // 位权相加
    67             tenBinaryResult += singleResult;
    68         }
    69         return tenBinaryResult;
    70     }
    71 
    72     public static void main(String[] args) {
    73         Scanner scanner = new Scanner(System.in);
    74         while (scanner.hasNext()) {
    75             String input = scanner.nextLine();
    76             int output = changeBinary(input);
    77             System.out.println(output);
    78         }
    79     }
    80 
    81 }
    View Code~拍一拍小轮胎


     

     

    世界上只有两种秘密

    骗自己的和以为能骗住别人的

     

     

  • 相关阅读:
    MySQL基础学习笔记
    网络编程入门笔记
    JUC并发编程学习笔记
    育儿技巧
    无法下载安装文件,请检查internet连接
    用户 'NT ServiceSSISScaleOutMaster140' 登录失败
    Javascript中apply、call、bind
    JQuery 源码解析一
    docker容器中部署 kafka 和 elk
    查找库中所有表所有字段中某个指定的字符
  • 原文地址:https://www.cnblogs.com/taojietaoge/p/13622718.html
Copyright © 2011-2022 走看看