十进制与十六进制的相互转换

在面对十进制与十六进制的相互转换的问题时,可以借鉴十进制与二进制之间相互转换的思想。

以下是十进制与二进制之间转换的图解:

基于以上的思想,想出了十进制与十六进制的相互转换的类似方法:

十进制转十六进制:
/*
 * 十进制转十六进制
 * */
public class Test5 {
    public static void main(String[] args) {
        DtoH(195);
    }

    /*
     * 十进制转十六进制方法
     *
     * @param x 待转换的十进制数
     */
    public static void DtoH(int x) {
        // 存放十六进制的十六个数
        String[] str = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F" };
        // 临时存放所有余数
        LinkedList<Integer> linkedList = new LinkedList<Integer>();
        // m:临时存放每次计算的余数
        int m = 0;
        while (x != 0) {
            m = x % 16;// m存余数
            linkedList.push(m);
            x = x / 16;
        }
        // reuslt:存放结果
        String reuslt = "";
        while (linkedList.size() != 0) {
            Integer popInteger = linkedList.pop();
            reuslt = reuslt + str[popInteger - 1];
        }
        System.out.println(reuslt);
    }
}

---------> 输出:C3


十六进制转十进制:
import java.util.HashMap;
import java.util.Scanner;

import org.junit.Test;

public class Test6 {
    public static void main(String[] args) {
        HtoD("C5");
    }

    /*
     * 十六进制转十进制
     *
     * @param str 待转换的十六进制数
     */
    public static void HtoD(String str) {
        // map:搭建十六进制中A-F对应的数值
        HashMap<String, Integer> map = new HashMap<String, Integer>();
        map.put("A", 10);
        map.put("B", 11);
        map.put("C", 12);
        map.put("D", 13);
        map.put("E", 14);
        map.put("F", 15);
        // 获取待转换的十六进制的长度
        int length = str.length();// 输入的长度
        // 将待转换的十六进制转换成数组
        char[] cs = str.toCharArray();
        // result:用于存结果
        int result = 0;
        // 遍历数组
        for (int i = 0; i < str.length(); i++) {
            //取出每一个字符
            char x = cs[i];
            if (x >= 65 && x <= 70) {//若为A--F
                int r = map.get("" + x);
                result += r * Math.pow(16, length - 1);
            } else {
                result += (x - ‘0‘) * Math.pow(16, length - 1);
            }
            length--;
        }
        System.out.println(result);
    }

}---------> 输出:197

【拓展】JAVA中已经有实现十进制与十六进制互相转换的方法:

十进制转十六进制:以下是java.lang.Integer.toHexString()方法的声明:
public static String toHexString(int i)   返回为无符号整数基数为16的整数参数的字符串表示形式。

 如:

System.out.println(Integer.toHexString(233));---------->e9
 

十六进制转十进制:
Integer.parseInt(String s,int radix) 就是求“int radix”进制数“String s”的十进制数是多少。 

如:

System.out.println(Integer.parseInt("1010", 2));
---------->意思就是:输出2进制数1010在十进制下的数.  输出:10

我们平时用到Integer.parseInt("123");其实默认是调用了int i =Integer.parseInt("123",10);  
 

原文地址:https://www.cnblogs.com/tubeWang/p/10031780.html

时间: 2024-10-07 00:48:03

十进制与十六进制的相互转换的相关文章

iOS-二进制,十进制,十六进制的相互转换

二进制化为十进制                 1001 1010  = 1*2^7+0*2^6+0*2^5+1*2^4+1*2^3+0*2^2+1*2^1+0*2^0 二进制化为十六进制              0011   1101  1011 =  3db 二进制化为八进制                 1010  1100   =   010   101  100  =  254 十进制化为二进制 2^0 = 1,2^1 = 2 ,2^2 = 4,2^3 = 8,2^4 = 16,

小编辑 Java 中十进制和十六进制的相互转换

1 2 3 4 5 // 十进制转化为十六进制,结果为C8. Integer.toHexString(200); // 十六进制转化为十进制,结果140. Integer.parseInt("8C",16);

二进制,八进制,十进制与十六进制之间的相互转换

功能:完成二进制,八进制,十进制与十六进制之间的相互转换(以字符数组形式输入). 要点: 字符数组反序:strrev(char *str); 字符数组转换为十进制整数:atoi(char *str); map容器完成字符到数值的转换: 字符数组完成数值到字符的转换: 1位16进制数可转换为4位2进制数 1位8进制数可转换为3位2进制数 使用右移和与运算代替除法和取余 #include<cstdio> #include<cstring> #include<cstdlib>

as3 二进制、八进制、十进制、十六进制之间的相互转换

var a:int=1234;//十进制 trace("十进制转二进制",a.toString(2));//二进制 trace("十进制转八进制",a.toString(8));//八进制 trace("十进制转十六进制",a.toString(16));//十六进制 var b:String="10011010010";//二进制 var b1:String="2322";//八进制 var b2:Str

二进制、八进制、十进制、十六进制的互相转换

在编程工作种,我们时常需要对不同的进制的数进行转换,以方便我们的工作.阅读和理解.在计算机领域,主要设计二进制.八进制.十进制和十六进制,下面我们就来讲讲这四种机制的整数相互转换方法. 一.查表法 就是我们制作一张包含各种进制的值一 一对应数值表,需要时查表就得,但是,我们知道,这不太现实,因为数是无穷的,我们不可能做一张无穷的表.在次但是,这也不是说查表法就不用了,其实我们一直在使用,你可能会说,没有,没见过,不对,有的,就在你的脑海里,我相信绝大部分程序员都有,比如,问你,(15)10对应的

python中各种基础类型的转换,二进制,八进制,十进制,十六进制

python中所有类型都是作为对象的形式来存在的. 在python中没有char型,只有字符串类型,这样我们可能将char型转换为整型时极不方便,但是python已经提供了这些转换的内置函数. python 中除了整型,其他进制的只能用字符串来表示 1 int() 可以将 二进制,八进制,十六进制转换成十进制整型 >>> int('1111', 2) 15 >>> int('f', 16) 15 >>> int('17', 8) 15 2 chr()

Java中二进制、十进制、十六进制及ASCII码与String及字节数组与十六进制之间的转换

public class DigitalTrans { /** * 数字字符串转ASCII码字符串 * * @param String * 字符串 * @return ASCII字符串 */ public static String StringToAsciiString(String content) { String result = ""; int max = content.length(); for (int i = 0; i < max; i++) { char c

二进制、八进制、十进制、十六进制之间的转换

  最近复习软考各种进制之间的转换着实让人头疼,今天把常用的几种进制之间的转换问题简单做个总结,希望能够对大家有所帮助.   二进制八进制之间的转换   二进制与八进制之间的关系式每个八进制位对应三个二进制位,详情如下:   八进制:  0    1     2    3     4    5     6    7       二进制:000 001 010 011 100 101 110 111   实例:   27.651(8)  010111.110101001(2)   1001.000

蓝桥杯软件大赛练习系统——基础练习 十进制转十六进制

问题描述 十六进制数是在程序设计时经常要使用到的一种整数的表示方式.它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15.十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E. 给出一个非负整数,将它表示成十六进制的形式. 输入格式 输入包含一个非负整数a,表示要转换的数.0<=a<=2147483647 输出格式 输出这个整数的16进制表示 样例输入