`
yelanglee
  • 浏览: 107902 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

java中进行二进制,八进制,十六进制,十进制间进行相互转换

阅读更多
十进制转成十六进制:
Integer.toHexString(int i)
十进制转成八进制
Integer.toOctalString(int i)
十进制转成二进制
Integer.toBinaryString(int i)
十六进制转成十进制
Integer.valueOf("FFFF",16).toString()
八进制转成十进制
Integer.valueOf("876",8).toString()
二进制转十进制
Integer.valueOf("0101",2).toString()

有什么方法可以直接将2,8,16进制直接转换为10进制的吗?
java.lang.Integer类
parseInt(String s, int radix)
使用第二个参数指定的基数,将字符串参数解析为有符号的整数。
examples from jdk:
parseInt("0", 10) returns 0
parseInt("473", 10) returns 473
parseInt("-0", 10) returns 0
parseInt("-FF", 16) returns -255
parseInt("1100110", 2) returns 102
parseInt("2147483647", 10) returns 2147483647
parseInt("-2147483648", 10) returns -2147483648
parseInt("2147483648", 10) throws a NumberFormatException
parseInt("99", throws a NumberFormatException
parseInt("Kona", 10) throws a NumberFormatException
parseInt("Kona", 27) returns 411787

进制转换如何写(二,八,十六)不用算法
Integer.toBinaryString
Integer.toOctalString
Integer.toHexString


例二

public class Test{
   public static void main(String args[]){

    int i=100;
    String binStr=Integer.toBinaryString(i);
    String otcStr=Integer.toOctalString(i);
    String hexStr=Integer.toHexString(i);
    System.out.println(binStr);

}



例二
public class TestStringFormat {
   public static void main(String[] args) {
    if (args.length == 0) {
       System.out.println("usage: java TestStringFormat <a number>");
       System.exit(0);
    }

    Integer factor = Integer.valueOf(args[0]);

    String s;

    s = String.format("%d", factor);
    System.out.println(s);
    s = String.format("%x", factor);
    System.out.println(s);
    s = String.format("%o", factor);
    System.out.println(s);
   }
}



其他方法:

Integer.toHexString(你的10进制数);
例如
String temp = Integer.toHexString(75);
输出temp就为 4b



//输入一个10进制数字并把它转换成16进制
import java.io.*;
public class toHex{

public static void main(String[]args){

int input;//存放输入数据
//创建输入字符串的实例
BufferedReader strin=new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入一个的整数:");
String x=null;
try{
x=strin.readLine();
}catch(IOException ex){
ex.printStackTrace();
}
input=Integer.parseInt(x);
System.out.println ("你输入的数字是:"+input);//输出从键盘接收到的数字

System.out.println ("它的16进制是:"+Integer.toHexString(input));//用toHexString把10进制转换成16进制
}
}
分享到:
评论
7 楼 hw1287789687 2011-10-29  
/**
     * 十进制整数 转换为 任何进制的数
     *
     * @param decimValue
     * @param radix 表示基数
     * @return
     */
    public static String decimalTo(int decimValue, int radix)
    {
        StringBuffer target = new StringBuffer();
        int digit = dealer(decimValue, radix);
        for (int i = digit; i > 0; i--)
        {
            int j = getDigPosition(decimValue, radix, i - 1);
            target.append(j);
            decimValue -= Math.pow(radix, i - 1) * j;
        }
        return target.toString();
    }

    /**
     * 获得指定数位上的值
     *
     * @param decimValue
     * @param radix
     * @param pow+1 表示第pow+1位上的值
     * @return
     */
    public static int getDigPosition(int decimValue, int radix, int pow)
    {
        int i = 0;
        while (true)
        {
            if (Math.pow(radix, pow) * i > decimValue)
            {
                break;
            }
            i++;
        }
        return i - 1;
    }

    /**
     * 获得转换后的位数
     * 到底有多少个数位。
     * @param value
     * @param radix
     * @return
     */
    public static int dealer(int value, int radix)
    {
        int i = 1;
        while (true)
        {
            double power = Math.pow(radix, i);
            if (power > value)
            {
                return i;
            }
            i++;
        }
    }

    public static void main(String[] args)
    {
        System.out.println(Integer.valueOf("2200",.toString());
        System.out.println(decimalTo(1152,);
    }
6 楼 JieBro 2011-08-18  
太好了,顶一个
5 楼 DataBird 2011-04-14  
好东西,谢谢!下面这样就没必要了。
Hex2Decimal.java

Below is the syntax highlighted version of Hex2Decimal.java from §3.1 Using Data Types.




/*************************************************************************
*  Compilation:  javac Hex2Decimal.java
*  Execution:    java Hex2Decimal x
*
*  Functions to convert x from hex to decimal and back.
*
*  % java Hex2Decimal 1F
*  31
*
*  % java Hex2Decimal FF
*  255
*
*  % java Hex2Decimal DEAD
*  57005
*
*  Alternate solution:  Integer.parseInt(s, 16)
*  This is more robust and works with negative integers.
*
*************************************************************************/

public class Hex2Decimal {

    public static int hex2decimal(String s) {
        String digits = "0123456789ABCDEF";
        s = s.toUpperCase();
        int val = 0;
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            int d = digits.indexOf(c);
            val = 16*val + d;
        }
        return val;
    }


    // precondition:  d is a nonnegative integer
    public static String decimal2hex(int d) {
        String digits = "0123456789ABCDEF";
        if (d == 0) return "0";
        String hex = "";
        while (d > 0) {
            int digit = d % 16;                // rightmost digit
            hex = digits.charAt(digit) + hex;  // string concatenation
            d = d / 16;
        }
        return hex;
    }

    public static void main(String[] args) {
        int decimal = hex2decimal(args[0]);
        System.out.println(decimal);

        String hex = decimal2hex(decimal);
        System.out.println(hex);
    }
}

4 楼 linchanglai 2011-03-04  
lyh20081984 写道
还是没弄明白,二进制转换成十进制该怎么写...

int q;
String str4="10110110";
q=Integer.valueOf(str4,2);
System.out.println(q);


str4代表着要进行转化的字符串可以是二进制形式也可以是八进制形式,如果是二进制则后边那个参数写2,后边参数代表着你写的那个字符串是几进制!
3 楼 dtlxt 2010-03-26  
好,谢谢!
2 楼 kuaiyuelaogong 2008-12-05  
lyh20081984 写道

还是没弄明白,二进制转换成十进制该怎么写...

已经明白的不能再明白了!你还要怎么写啊。呵呵。难道要楼主帮你编码啊,晕
1 楼 lyh20081984 2008-11-03  
还是没弄明白,二进制转换成十进制该怎么写...

相关推荐

Global site tag (gtag.js) - Google Analytics