精华内容
下载资源
问答
  • java实现进制转换

    2020-07-21 16:58:28
    本篇主要使用java方法实现,若要实现:十进制转化为k进制,主要采用思想:除k取余法,其他进制转化为十进制就比较好算了。要熟悉利用二进制与八进制与十六进制之间关系。 代码: package hexadecimal_conversion; ...

    本篇主要使用java方法实现,若要实现:十进制转化为k进制,主要采用思想:除k取余法,其他进制转化为十进制就比较好算了。要熟悉利用二进制与八进制与十六进制之间的关系。

    代码:

    package hexadecimal_conversion;
    //进制转换
    public class Conver {
    
    	public static void main(String[] args) {
    		//十进制转化为其他进制--toString方法,参数为整形,结果为字符串
    		int num_10 = 1096256;
    		String s2 = Integer.toBinaryString(num_10);
    		String s8 = Integer.toOctalString(num_10);
    		String s16 = Integer.toHexString(num_10);
    		System.out.println("2进制:"+ s2 +"--" + "8进制:" + s8 + "--" +"16进制:" + s16 );
    		String num2 = Integer.toString(num_10, 3);  //  10进制转化为任意进制
    		System.out.println(num2);
    		
    		//其他进制转换为10进制--valueOf方法,参数为字符串和转化进制,结果为整形
    		int num_2 = Integer.valueOf("0110",2);   // 2进制转化为10进制
    		int num_8 = Integer.valueOf("4567",8);  //8进制转化为10进制
    		int num_16 = Integer.valueOf("ffff",16);  //16进制转化为10进制
    		System.out.println(num_16);
    		
    		//假设输入的为7进制--->  将7进制先转换为10进制再转化为8进制
    		String num_7 = "1234560";
    		String s_8 = Integer.toString(Integer.valueOf(num_7, 7),8);
    		System.out.println(s_8);
    	}
    
    }
    
    
    展开全文
  • 直接看代码, 以实现25进制的数转化为16进制的数为例:思路是:经过一次转换,先将25进制的数转化为10进制,再将10进制的数转化为16进制;如有问题,欢迎指正;import java.lang.Math;import java.util.ArrayList;...

    直接看代码, 以实现25进制的数转化为16进制的数为例:

    思路是:经过一次转换,先将25进制的数转化为10进制,再将10进制的数转化为16进制;

    如有问题,欢迎指正;

    import java.lang.Math;

    import java.util.ArrayList;

    import java.util.List;

    public class Practise {

    private static long tenToAny(long middle) {

    // 10进制到任意进制,以16进制为例;

    double origin = (double) middle;

    List a = new ArrayList<>();

    while (origin > 0) {

    // 这里的16可以替换成任意你要的进制;

    // 获取最大的幂, 如m*16^x

    int x = (int)(Math.log(origin) / Math.log(16));

    // 获取该幂的乘数

    int m = (int)(origin / Math.pow(16, (double)(x)));

    a.add(m);

    // 取余,进行递归运算

    origin = origin % (m * Math.pow(16, (double)(x)));

    }

    StringBuilder c = new StringBuilder();

    for (Integer each:a

    ) {

    c.append(each.toString());

    }

    return Long.parseLong(c.toString());

    }

    public static void main(String[] args) {

    String origin = "A5F1065SB";

    long ten = Practise.anyTo10(origin);

    System.out.print("十进制数为: " + Long.toString(ten));

    System.out.println(tenToAny(ten));

    }

    private static int anyTo10(String origin) {

    // 任意进制如25进制的数转换为10进制

    // aka公式:m = a1*25^n-1 + a2*25^n-2 + ... + an*25^0

    String[] elements = origin.split("");

    int mm = 0;

    for (int i=0;i<=elements.length - 1; i++

    ) {

    Character c = elements[i].charAt(0);

    System.out.print(getByteNum(c) + "\n");

    mm += getByteNum(c) * Math.pow(25, elements.length - 1 - i);

    }

    System.out.println(mm);

    return mm;

    }

    private static int getByteNum(Character ch) {

    // 返回任意字符的numeric value, 如A是10,B是11,1就是1等

    return Character.getNumericValue(ch);

    }

    }

    展开全文
  • Java实现进制转换

    2019-05-26 14:05:32
    进制转二进制 一、除数留余法: 用2整除十进制整数,可以得到一个商和余数,再用2去除商,又会得到一个商和余数,如此...代码实现如下: public static void tenToBin(int num) { //取num绝对值 int absNum...

    十进制转二进制

    一、除数留余法:
    用2整除十进制整数,可以得到一个商和余数,再用2去除商,又会得到一个商和余数,如此进行,直到商为小于1时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。

    代码实现如下:

    public static void tenToBin(int num) {
            //取num的绝对值 
    		int absNum = Math.abs(num);
    		//假设我们要得到一个32位的二进制数
    		int[] bins = new int[32];
    		//不停的循环上述算法过程
    		for(int i = 0; absNum > 0; i++) {
    			bins[i] = absNum % 2;
    			absNum /= 2;
    		}
    		//判断一下num是否是负数
    		//如果是负数还需要进行取反、最低位+1操作(负数以补码表示)
    		if (num < 0) {
    			//首先对所有非符号位取反 
    			for(int i = 0; i < 31; i++) {
    				bins[i] = bins[i] == 0 ? 1 : 0;
    			}
    			//之后在最低位加1
    			for(int i = 0; i < 31; i++) {
    				if (bins[i] == 0) {
    					bins[i] = 1;
    					break;
    				}else {
    					bins[i] = 0;
    				}
    			}
    			//最高位置1,表示负数
    			bins[bins.length - 1] = 1;
    		}
    		//将数组倒过来,所有的元素拼接在一起就是最终的结果了
    		StringBuilder sBuilder = new StringBuilder();
    		for(int i = bins.length - 1; i >= 0; i--) {
    			sBuilder.append(bins[i]);
    		}
    		System.out.println(sBuilder);
    	}
    

    需要注意的是
    1.基于上述的这种实现思想(除数取余),对于任意十进制正整数转换到任何进制(比如三进制、八进制、十六进制等等)都是通用的
    2.而对于任意十进制负整数转换到其它进制,需要先将其转换为二进制(补码形式),再由该补码转换为我们想要的进制。

    下面举个简单的例子:
    假如我们要获得 -5 的十六进制表示,那么步骤如下:
    1). 获取 - 5 的二进制原码表示: 10000000 00000000 00000000 00000101
    2). 取反后最低位+1,获取 -5 的补码表示 11111111 11111111 11111111 11111011
    3). 之后由该补码,获得十六进制的表示 : 0xFFFFFFFB

    二、移位运算法

    public static void tenToBin(int num) {
    		StringBuilder sBuilder = new StringBuilder();
    		
    		//假设我们要得到一个32位的二进制数
    		for (int i = 0; i < 32; i++){
    		    //与 1 执行按位与运算,其目的就是对2求余
    	        sBuilder.append(num & 1);
    	        
    	        //采用无符号右移来实现除法
    	        //这样既保证了符号位参与运算,又借助了移位运算速度优于除法速度这一优势
    	        num = num >>> 1;
    	    }
    	    //记得翻转啊
    	    System.out.println(sBuilder.reverse());
    	}
    

    上述的移位运算代码不难理解,但有两点值得我们去注意一下
    第一点:由于是移位运算,所以上述代码只适用于十进制转换为二进制,不像第一种除数留余法那样更具有普适性。
    第二点:采用无符号右移,保证了符号位参与运算,使得我们不必像第一种实现方法里那样针对负数,不得不自己实现补码的运算。

    三、借助JDK

    1.三个特定的进制转换函数:
    1)public static String toBinaryString(int i) : 将十进制数转换为二进制数表示
    2)public static String toOctalString(int i) : 将十进制数转换为八进制数表示
    3)public static String toHexString(int i) : 将十进制数转换为十六进制数表示

    注意:上述三个Integer的静态方法传入负数时会返回补码表示

    使用示例:

    public static void main(String[] args) {
    		System.out.println("-5的二进制表示:" + Integer.toBinaryString(-5));
    		System.out.println("-5的八进制表示:" + Integer.toOctalString(-5));
    		System.out.println("-5的十六进制表示:" + Integer.toHexString(-5));
    }
    

    打印结果:

    -5的二进制表示:11111111111111111111111111111011
    -5的八进制表示:37777777773
    -5的十六进制表示:fffffffb
    

    再额外介绍两个方法:

    1. public static String toString(int i,int radix):将十进制的数转化成指定进制数的字符串形式;radix参数指进制数;
    2. public static int parseInt(String s,inr radix)::将指定进制数转化成十进制数;参数s表示进制数的字符串形式;参数radix表示该字符串是什么进制数;我们常用的Integer.parseInt(s)其实就是Integer.parseInt(s,10)

    第一个方法需要注意一下:
    传入负数时返回的不是补码,详情见下面打印输出结果

    使用示例:

    public static void main(String[] args) {
    		System.out.println("-2的二进制表示:" + Integer.toString(-2,2));
    		System.out.println("二进制数0010的十进制表示:" + Integer.parseInt("0010",2));
    }
    

    打印结果:

    -2的二进制表示:-10
    二进制数0010的十进制表示:2
    
    展开全文
  • 由其他进制转换为十进制比较简单,下面着重谈一谈十进制如何化为其他进制。 使用Java带有方法Integer,最简单粗暴了,代码如下: 1 //使用java提供方法 2 //但仅局限于比较常用二进制、八进制、十六...

    由其他进制转换为十进制比较简单,下面着重谈一谈十进制如何化为其他进制。

    1. 使用Java带有的方法Integer,最简单粗暴了,代码如下:
       1 //使用java提供的方法
       2     //但仅局限于比较常用的二进制、八进制、十六进制
       3     public static String trans1(int num, int radix)
       4     {
       5         if(radix == 2)
       6             return Integer.toBinaryString(num);
       7         else if(radix == 8)
       8             return Integer.toOctalString(num);
       9         else if(radix == 16)
      10             return Integer.toHexString(num);
      11  
      12         return null;
      13     }

      2.使用数组进行交换,贴码:

       1 //使用数组的形式进行转换
       2     public static void trans2(int num, int radix)
       3     {
       4         System.out.println(num+"转成"+radix+"进制数为:");
       5  
       6         //创建数组,32位
       7         char[] arr = new char[32];
       8     
       9         //创建参考字符数组
      10         char[] ch = {
      11             '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'
      12         };
      13  
      14         //指针,从数组最后开始
      15         int pos = 32;
      16  
      17         //开始循环计算num和radix的商和余数
      18         while(num > 0)
      19         {
      20             arr[--pos] = ch[num % radix];
      21             num /= radix;
      22  
      23             /*
      24              * 这里是针对二进制、八进制和十六进制进行的移位运算
      25             arr[--pos] = ch[num&(radix-1)];
      26             if(radix == 2)
      27                 num >>= 1;
      28             else if(radix == 8)
      29                 num >>= 3;
      30             else if(radix == 16)
      31                 num >>= 4;
      32             */
      33         }
      34  
      35         //输出有效的进制数
      36         for(int i = pos; i < 32; i++)
      37             System.out.print(arr[i]);
      38  
      39         System.out.println();
      40     }

      3.使用StringBuilder类型,贴码:

         1 //使用StringBuilder进行转换
     2     public static String trans3(int num, int radix)
     3     {
     4         //使用StringBuilder的reverse方法
     5         StringBuilder sb = new StringBuilder();
     6  
     7         while(num > 0)
     8         {
     9             //把除以基数的余数存到缓冲区中
    10             sb.append(num % radix);
    11             num /= radix;
    12         }
    13  
    14         return sb.reverse().toString();
    15     }

     

    转载于:https://www.cnblogs.com/xiaolongdejia/p/10867121.html

    展开全文
  • Java 3种方法实现进制转换,数组,余数,方法,详细内容,相关文章Java 3种方法实现进制转换易采站长站,站长之家为您整理了Java 3种方法实现进制转换的相关内容。由其他进制转换为十进制比较简单,下面着重谈一谈十进制...
  • Java 中二进制转换成十六进制两种实现方法每个字节转成16进制,方法1/*** 每个字节转成16进制,方法1** @param result*/private static String toHex(byte[] result) {StringBuffer sb = new StringBuffer(result....
  • 1.使用Java带有方法Integer,最简单粗暴了,代码如下//使用java提供方法//但仅局限于比较常用进制、八进制、十六进制public static String trans1(int num, int radix){if(radix == 2)return Integer....
  • 1.使用Java带有方法Integer,最简单粗暴了,代码如下//使用java提供方法//但仅局限于比较常用进制、八进制、十六进制public static String trans1(int num, int radix){if(radix == 2)return Integer....
  • * 需求1:我要求计算100这个数据进制,八进制,十六进制 * 需求2:判断一个数据是否是int类型范围内 * 首先知道int范围是多大 * * public static String toBinaryString(int i)计算二进制 * public ...
  • 1.使用Java带有方法Integer,最简单粗暴了,代码如下//使用java提供方法//但仅局限于比较常用进制、八进制、十六进制public static String trans1(int num, int radix){if(radix == 2)return Integer....
  • JAVA实现蓝桥杯基础练习十六进制转换八进制-----------拓展进制转换计算器 这个题目我浏览了大量的道友的文章发现十分麻烦,但仍然从其中收益菲薄,所以在这里分享一下我认为最好的代码 import java.math.BigInteger...
  • 实现代码:public class BinaryTest {//设置字符数组//可以添加任意不重复字符,提高能转换的进制的上限static char chs[] = new char[36];static {for(int i = 0; i < 10 ; i++) {chs[i] = (char)('0' + i);}for...
  • 直接把带转换的字符串换成char数组,根据对应的char在Ascii中的值进行处理,实现代码参考下列(本人写的一个简单demo):package Test;public class Tbst {public static void main(String[] args) {System.out....
  • 本文实例讲述了Java实现复杂的进制转换器功能。分享给大家供大家参考,具体如下:这是用java写的进制转换器,包括10、2、8、16进制之间共12种的相互转换。输入一个要转换的数之后,按提示选择所采用的转换方式,输出...
  • 今天看到有个羣聊里分享了一道面试题,感觉挺有意思就尝试了一下,代码如下:public class Hex26 {// 进制基础值,也可以修改为'a'private final static char A = 'A';public static void main(String[] args) {...
  • 进制转换为十进制:public static double bin2DecXiao(String binXStr) {double decX = 0.0; //位数int k = 0;for (int i = 0; i < binXStr.length(); i++) {int exp = binXStr.charAt(i)...
  • 本文实例讲述了Java实现复杂的进制转换器功能。分享给大家供大家参考,具体如下:这是用java写的进制转换器,包括10、2、8、16进制之间共12种的相互转换。输入一个要转换的数之后,按提示选择所采用的转换方式,输出...
  • php 实现进制转换(二进制、八进制、十六进制)互相转换实现代码发布于 2014-11-03 15:54:42 | 117 次阅读 | 评论: 0 | 来源: 网友投递PHP开源脚本语言PHP(外文名: Hypertext Preprocessor,中文名:“超文本预处理器...
  • JAVA实现十进制之内数的进制转换解释测试代码 解释 其它进制转为十进制:对应位乘以其对应基数。 十进制数转为其它进制数:除以进制数取余法。(例如:除2取余法) 测试代码 /** * 测试进制转换 * 1. 一个任意...
  • Java 大数进制转换

    2020-05-14 18:26:00
    实现进制转换时出现了 数字过大 Integer.parseInt() 方法无法转换的情况 解决办法 使用BigInteger中toString(int index)即可,代码如下: //可根据情况转换为2、8、16进制 String m_binary = new BigInteger(m)....
  • 将前面java实现链栈的代码稍作修改:package linkedstack;public class LinkStack {private Element base;private Element top;class Element{public Object data;public Element next;}/*** 初始化栈* */public ...
  • 进制转换首先是十进制转化为其他进制,如二进制,八进制,十六进制:它们在java中都有专门函数可供调用:如:十进制转化为二进制时调用toBinaryString();十进制转化为八进制时调用toOctalString();十进制转化为...
  • 代码如下: package basic; import java.util.Scanner; /* * Goal:十进制数转换成八进制、二进制、十六进制 ... * 首先如果这个数非零,则把它与要转换的进制数的最大进位数进行与运算,这样就能...
  • 二进制转十进制java代码Java有两种方法可以将二进制数转换为十进制...方法1:使用Integer.parseInt()实现进制转换为十进制import java.util.Scanner;class BinaryToDecimal {public static void main(String args...
  • java进制BigInteger十分强大,而且好用,他可以表示任意大整数,同时还可以进行进制转换,十分方便, 代码示例: 1 package com.jiajia.demo_1; 2 import java.math.BigInteger;//导入该包 3 ...
  • 由其他进制转换为十进制比较简单,下面着重谈一谈十进制如何化为其他进制。 1.使用Java带有方法Integer,最简单粗暴了,代码如下 //使用java提供方法 //但仅局限于比较常用二进制、八进制、十六进制 public ...
  • Java实现任意进制转换

    2019-10-02 20:55:03
    实现代码: public class BinaryTest { //设置字符数组 //可以添加任意不重复字符,提高能转换的进制的上限 static char chs[] = new char[36]; static { for(int i = 0; i < 10 ; i++) { ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 575
精华内容 230
关键字:

java实现进制转换的代码

java 订阅