码迷,mamicode.com
首页 > 编程语言 > 详细

java任意进制转换

时间:2020-02-22 13:53:51      阅读:89      评论:0      收藏:0      [点我收藏+]

标签:end   代码   其他   code   lse   integer   基础算法   ever   java代码   

java任意进制转换

前言

我们正常使用的是十进制,计算机使用的是二进制,初次之外还有很多不同的进制,但是转换方法都相似,这里就整理一下java的进制转换。

调用函数

十进制转十六进制
Integer.toHexString(int i)

十进制转八进制
Integer.toOctalString(int i)

十进制转二进制
Integer.toBinaryString(int i)

十六进制转十进制(二进制八进制类似)
Integer.valueOf("FFFF",16).toString()

写的代码

这里还写了一段java代码,可以用于进行16进制之内的转换,如果想要增加,只要修改radix数组即可。
两个函数,一个是其他进制转十进制的,一个是十进制转任意进制的。用的都是基础算法,按位乘和取余。
(话说我没有考虑过输入异常,比如0进制什么的)

  static char[] radix = new char[]{'0','1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd',
      'e', 'f'};

  static int transRadixtoTen(String num, int fromRadix) {
    StringBuilder s = new StringBuilder(num);
    int number = 0;
    for (int i = 0; i < s.length(); i++) {
      char temp = s.charAt(i);
      if (temp <= '9' && temp >= '0') {
        number += temp - '0';

      } else if (temp <= 'z' && temp >= 'a') {
        number += temp - 'a' + 10;

      } else if (temp <= 'Z' && temp >= 'A') {
        number += temp - 'A' + 10;

      }
      if (i != s.length() - 1) {
        number *= fromRadix;
      }
    }
    return number;
  }

  static String transRadixtoOther(String num, int fromRadix, int toRadix) {
    int number = transRadixtoTen(num, fromRadix);
    System.out.println(number);
    StringBuilder s = new StringBuilder();
    while (number != 0) {
      s.append(radix[number % toRadix]);
      number = number / toRadix;
    }
    return s.reverse().toString();
  }

java任意进制转换

标签:end   代码   其他   code   lse   integer   基础算法   ever   java代码   

原文地址:https://www.cnblogs.com/blogxjc/p/12345062.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!