• java学习之进制转换(指针思想,重在理解掌握)


    /**
    *
    */
    package com.dreamly.day01;

    /**
    * @author dreamly
    *
    */
    public class ArrayTest {

    public static void main(String[] args) {
    // toBin(6);
    // toO(60);
    toHex(60);
    }
    /**
    * 十进制转二进制
    * @param num
    * @param base
    * @param offset
    */
    public static void toBin(int num) {
    trans(num,1,1);
    }
    /**
    * 十进制转八进制
    * @param num
    * @param base
    * @param offset
    */
    public static void toO(int num) {
    trans(num,7,3);
    }
    /**
    * 十进制转十六进制
    * @param num
    * @param base
    * @param offset
    */
    public static void toHex(int num) {
    trans(num,15,4);
    }

    /**
    *
    * 0 1 2 3 4 5 6 7 8 9 A B C D E F ==十六进制中的元素
    * 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
    *
    * 查表法处理进制转换
    * 将所有元素临时存储起来,建立对应关系,每一次&base后的值作为索引去查看建立好的表,就可以找对应的元素
    * 这样比-10+'a'简单
    *
    * 结果是反着的,正过来可以通过stringBuffer reverse功能来完成
    * 也可以通过数组容器来完成存储
    *
    * @param num
    * @param base
    * @param offset
    */
    public static void trans(int num,int base, int offset) {
    if(num==0) {
    System.out.println(0);
    return ;
    }
    char[] chs= {'0','1','2','3'
    ,'4','5','6','7'
    ,'8','9','A','B'
    ,'C','D','E','F'};
    char[] arr=new char[32]; //实例化时:在堆空间内的默认值初始值是'u0000',即--空隔
    int pos=arr.length; //指针,此处巧用表达式来达成目的
    while(num!=0) {
    int temp=num&base;
    arr[--pos]=chs[temp];
    num=num>>>offset;
    }

    for(int x=pos;x<arr.length;x++) {
    System.out.print(arr[x]);
    }
    System.out.println();
    }

    }

  • 相关阅读:
    写页面得来的体会
    C#&java重学笔记(面向对象)
    C#&java重学笔记(函数)
    C#&java重学笔记(变量与操作符)
    深入JS第一天:原型和它的小伙伴们(一)
    兼容性积累
    再深入一点ajax
    Android之内存泄漏调试学习与总结
    优雅地实现Android主流图片加载框架封装,可无侵入切换框架
    优雅地实现Android主流图片加载框架封装,可无侵入切换框架
  • 原文地址:https://www.cnblogs.com/zhaohuan1996/p/8030148.html
Copyright © 2020-2023  润新知