精华内容
下载资源
问答
  • 十六进制转成十进制的java程序实现

    热门讨论 2009-04-26 11:09:45
    十六进制转成十进制的java程序实现,实在是没分了。没办法了。
  • 10:十进制转十六进制 ...十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。  给出一个非负整数,将它表示十六进制的形...

    10:十进制转十六进制

    问题描述:

      十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有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进制表示

    样例输入:

            30

    样例输出

            1E

    ----------------------------------------------------

    思路:

           十进制转换为k进制可采用除k取余法。

           需要注意的是:这里越早得到的数字其数位越低,因此应对得到的字符串进行倒置处理。

    代码示例:

    import java.util.*;
    
    public class Main {
    	public static void main(String[] args) {
    		Scanner in = new Scanner(System.in);
    		long n = in.nextLong();
    		in.close();
    		
            // 用数组保存十六进制下0-15相应的字符
    		char[] a = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
    		
    		StringBuilder s = new StringBuilder();
    		
    		if (n == 0)
    			s.append("0");
    		
    		while (n != 0) {
    			s.append(a[(int)n%16]);
    			n /= 16;
    		}
    		s.reverse();
    		System.out.println(s);
    	}
    }

     

    11:十六进制转十进制

    问题描述:

      从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
      注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。

    样例输入:

            FFFF

    样例输出:

            65535

    --------------------------------------------------------------------------------------------------

    思路:

            k进制转换为十进制,即求 当前位数字 * 进制基数 * 数位权重 之和。

           例如:1E = E(14)*16^0 + 1*16^1 = 14 + 16 = 30

    代码示例:

    import java.util.*;
    
    public class Main {
    	public static void main(String[] args) {
    		Scanner in = new Scanner(System.in);
    		StringBuilder s = new StringBuilder(in.nextLine());
    		in.close();
    		
    		long rel = 0;
    		s.reverse();
    		for (int i=0; i<s.length(); i++) {
    			char c = s.charAt(i);
    			int temp = c-'0';
    			
                // 用来判断这一位的字符是0-9还是A-F('A'-'0'=17)
    			if (temp < 16) {
    				rel += temp * Math.pow(16, i);
    			}
    			else {
    				rel += (temp-7) * Math.pow(16, i);
    			}
    		}
    		
    		System.out.println(rel);
    	}
    }
    

     

    12:十六进制转八进制

    问题描述:给定n个十六进制正整数,输出它们对应的八进制数。

    输入格式:
      输入的第一行为一个正整数n (1<=n<=10)。
      接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。

    输出格式:输出n行,每行为输入对应的八进制正整数。

       【注意】
      输入的十六进制数不会有前导0,比如012A。
      输出的八进制数也不能有前导0。

    样例输入
      2
      39
      123ABC

    样例输出
      71
      4435274

    ---------------------------------------------------------------------------------

    思路:
      先将十六进制数转换成二制数,再由二进制数转换成八进制。

           需要注意的是:每1位十六进制数可以转换为4位二进制数,而3位二进制数可以转换为1位八进制数。

    代码示例:

    import java.util.*;
    
    public class Main{
        // 将十六进制转换为二进制
    	private static StringBuilder toBinary(String strHex) {  
            StringBuilder strBin = new StringBuilder();
            
            for (int i=0; i<strHex.length(); i++){
            	char c = strHex.charAt(i);
                switch (c) {
                    case '0':
                    	strBin.append("0000");
                    	break;
                    case '1':
                    	strBin.append("0001");
                    	break;
                    case '2':
                    	strBin.append("0010");
                    	break;
                    case '3':
                    	strBin.append("0011");
                    	break;
                    case '4':
                    	strBin.append("0100");
                    	break;
                    case '5':
                    	strBin.append("0101");
                    	break;
                    case '6':
                    	strBin.append("0110");
                    	break;
                    case '7':
                    	strBin.append("0111");
                    	break;
                    case '8':
                    	strBin.append("1000");
                    	break;
                    case '9':
                    	strBin.append("1001");
                    	break;
                    case 'A':
                    	strBin.append("1010");
                    	break;
                    case 'B':
                    	strBin.append("1011");
                    	break;
                    case 'C':
                    	strBin.append("1100");
                    	break;
                    case 'D':
                    	strBin.append("1101");
                    	break;
                    case 'E':
                    	strBin.append("1110");
                    	break;
                    case 'F':
                    	strBin.append("1111");
                    	break;
                    default:
                    	break;
                }
            }
            return strBin;
        }
    	
        // 将二进制转换为八进制
    	private static StringBuilder toOctal(StringBuilder strBin) {
            StringBuilder strOct = new StringBuilder();
            
            for (int i=0; i<strBin.length(); i+=3) {
            	String temp = strBin.substring(i, i+3);
            	
                switch (temp) {
                    case "000":
                    	strOct.append("0");
                    	break;
                    case "001":
                    	strOct.append("1");
                    	break;
                    case "010":
                    	strOct.append("2");
                    	break;
                    case "011":
                    	strOct.append("3");
                    	break;
                    case "100":
                    	strOct.append("4");
                    	break;
                    case "101":
                    	strOct.append("5");
                    	break;
                    case "110":
                    	strOct.append("6");
                    	break;
                    case "111":
                    	strOct.append("7");
                    	break;
                    default:
                    	break;
                }
            }
            return strOct;
        }
    	
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            int n = in.nextInt();
            
            String[] strHex = new String[n];
            for (int i=0; i<n; i++) {
                strHex[i] = in.next();
            }
            in.close();
            
            for (int i=0;i<n;i++) {
                StringBuilder strBin = toBinary(strHex[i]);
                int l = strBin.length();
                
                // 不足三位时用零补足
                if (l%3 == 1) {
                	strBin.insert(0, "00");
                }
                if (l%3 == 2) {
                	strBin.insert(0, "0");
                }
                
                StringBuilder strOct = toOctal(strBin);
                // 去掉前导位的0
                if (strOct.charAt(0) == '0') {
                	
                	strOct.deleteCharAt(0);
                }
                System.out.println(strOct);
            }
        }
    }

     

    展开全文
  • 十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。 给出一个非负整数,将它表示十六进制的形式。 输入格式 输入包含一个...

    BASIC-10 十进制转十六进制

    资源限制

    时间限制:1.0s 内存限制:512.0MB

    问题描述

    十六进制数是在程序设计时经常要使用到的一种整数的表示方式。
    它有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进制表示

    样例输入

    30

    样例输出

    1E

    #include<iostream>
    #include<cstring>
    using namespace std;
    int  main(){
    	int n,i=0,t;
    	cin>>n;
    	char s[10];
    	if(n==0)
    		cout<<0;
    	else{
    		while(n){
    			t=n%16;
    			if(t>=10)
    				s[i++]=t%10+'A';
    			else
    				s[i++]=t+'0';
    			n=n/16;
    		}
    		s[i]='\0';
    		char ch;
    		int len=strlen(s);
    		for(i=0;i<len/2;i++){
    			ch=s[i];
    			s[i]=s[len-i-1];
    			s[len-i-1]=ch;
    		}
    		cout<<s;
    	}
    	return 0;
    }
    

    BASIC-11 十六进制转十进制

    资源限制

    时间限制:1.0s 内存限制:512.0MB

    问题描述

    从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
    注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。

    样例输入

    FFFF

    样例输出

    65535

    #include<iostream>
    #include<cstring>
    using namespace std;
    int  main(){
    	char s[10];
    	long long sum=0;	//注意数据类型的大小
    	cin>>s;
    	int len=strlen(s);
    	for(int i=0;i<len;i++){
    		if(s[i]>='0'&&s[i]<='9'){
    			sum=sum*16+(s[i]-'0');
    		}
    		if(s[i]>='A'&&s[i]<='F')
    			sum=sum*16+(s[i]-'A'+10);
    	}
    	cout<<sum;
    	return 0;
    }
    

    BASIC-12 十六进制转八进制

    资源限制

    时间限制:1.0s 内存限制:512.0MB

    问题描述

    给定n个十六进制正整数,输出它们对应的八进制数。

    输入格式

    输入的第一行为一个正整数n (1<=n<=10)。
    接下来n行,每行一个由0 ~ 9、大写字母A ~ F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。

    输出格式

    输出n行,每行为输入对应的八进制正整数。

    【注意】   
    输入的十六进制数不会有前导0,比如012A。   
    输出的八进制数也不能有前导0。

    样例输入

    2   
    39   
    123ABC

    样例输出

    71   
    4435274

    【提示】   
    先将十六进制数转换成某进制数,再由某进制数转换成八进制。

    #include <iostream>
    #include <string>
    using namespace std;
    int main(){
        int n;
        cin>>n;
        string s1[12],s2[12];
        for(int i = 0;i<n;i++)
            cin>>s1[i];
        for(int i = 0;i<n;i++){
            s2[i]="";
            for(int j = 0;j<s1[i].length();j++){
                switch (s1[i][j]) {
                    case '0' : s2[i] += "0000"; break;
                    case '1' : s2[i] += "0001"; break;
                    case '2' : s2[i] += "0010"; break;
                    case '3' : s2[i] += "0011"; break;
                    case '4' : s2[i] += "0100"; break;
                    case '5' : s2[i] += "0101"; break;
                    case '6' : s2[i] += "0110"; break;
                    case '7' : s2[i] += "0111"; break;
                    case '8' : s2[i] += "1000"; break;
                    case '9' : s2[i] += "1001"; break;
                    case 'A' : s2[i] += "1010"; break;
                    case 'B' : s2[i] += "1011"; break;
                    case 'C' : s2[i] += "1100"; break;
                    case 'D' : s2[i] += "1101"; break;
                    case 'E' : s2[i] += "1110"; break;
                    case 'F' : s2[i] += "1111"; break;
                    default:
                        break;
                }
            }
            if(s2[i].length()%3==1)
    			s2[i] = "00" + s2[i];
            else if(s2[i].length()%3==2)
    			s2[i] = "0" + s2[i];
            int flag = 0;
            for(int j = 0;j<=s2[i].length()-3;j+=3){
                int num = 4*(s2[i][j]-'0')+2*(s2[i][j+1]-'0')+(s2[i][j+2]-'0');
                if(num)
    				flag = 1;
                if(flag)
    				cout<<num;
            }
            cout<<endl;
        }
        return 0;
    }
    
    

    BASIC-13 数列排序

    资源限制

    时间限制:1.0s 内存限制:512.0MB

    问题描述

    给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200

    输入格式

    第一行为一个整数n。   
    第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。

    输出格式

    输出一行,按从小到大的顺序输出排序后的数列。

    样例输入

    5
    8 3 6 4 9

    样例输出

    3 4 6 8 9

    #include<iostream>
    #include<algorithm>
    using namespace std;
    int main(){
    	int n,m[201];
    	cin>>n;
    	for(int i=0;i<n;i++)
    		cin>>m[i];
    	sort(m,m+n);
    	for(int i=0;i<n;i++)
    		cout<<m[i]<<" ";
    	return 0;
    }
    
    展开全文
  • 10.基础练习 十进制转十六进制 /*问题描述十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,...

    10.基础练习 十进制转十六进制  

    /*问题描述
    十六进制数是在程序设计时经常要使用到的一种整数的表示方式。
    它有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进制表示*/

    //直接调用了java中的进制转换的方法

    import java.util.Scanner;
    public class Main {
    public static void main(String[] args) {
    Scanner scan=new Scanner(System.in);
    long a=scan.nextLong();
    System.out.println(Long.toHexString(a).toUpperCase());
    }
    }

     11.基础练习 十六进制转十进制 

    /*问题描述
    从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。

    注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。*/

    //直接调用了java中的进制转换的方法

    import java.util.Scanner;
    public class Main11 {
    public static void main(String[] args) {
    Scanner scan=new Scanner(System.in);
    String s=scan.nextLine();
    System.out.println(Long.valueOf(s, 16).toString());
    }
    }
    展开全文
  • 十六进制转十进制

    2020-02-29 20:59:07
    问题描述  十六进制数是在程序设计时经常要使用到的一种整数的表示...而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。  给出一个非负整数,将它表示十六进制的形式。 输入格式  输入...

    问题描述
      十六进制数是在程序设计时经常要使用到的一种整数的表示方式。
    它有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进制表示
    样例输入
    30
    样例输出
    1E

    #include<iostream>
    using namespace std;
    int main(){
    	int a;
    	cin >> a;
    	int i=0;
    	char b[100];
        if (a == 0) {
            cout << "0";
        } 	
    	else{
    		while (a!=0)
    		{
    			if(a%16 >= 10)
    			{
    				b[i++] = a%16-10+'A';//转换为A~E,通过减去'A', 
    			}
    			else
    			{
    				b[i++] = a%16+'0';//加上'0'补空,避免出现异常字符 
    			}
    			a= a/16;//处理高位 ,非零继续 
    		 } 
    	} 
        for (int k = i - 1; k >= 0; k--)
                cout << b[k];
        return 0;
    } 
    
    展开全文
  • 进制转换:十进制数转十六...十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。  给出一个非负整数,将它表示十六进制的形...
  • 十进制转换成十六进制

    千次阅读 2015-02-27 10:21:11
    十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。  给出一个非负整数,将它表示十六进制的形式。 输入格式
  • 十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11, 以此类推,十进制的30在十六进制中是1E。  给出一个非负整数,将它表示十六进制的形式。 输入格式  输入包...
  • 今天看到一个十六进制转为十进制的程序,感觉比较特别! #include #include #include  #define HEXTD(x) (((x)   /* hex_to_digit:将一个由字符串表示的十六进制字串转换其对应的十进制数。  ...
  • 十六进制转十进制 - C

    2019-09-30 21:11:04
    6.2.5 十六进制数转换成十进制数   16进制就是逢16进1,但我们只有0~9这十个数字,所以我们用A,B,C,D,E,F这五个字母来分别表示 10,11,12,13,14,15。字母不区分大小写。 十六进制第0位权值为16...
  • 进制转换 写出一个程序,接受一个十六进制的数值字符串,输出该...10解题十六进制转换成十进制如下 定义 16进制即逢16进1,其中用A,B,C,D,E,F(字母不区分大小写)这六个字母来分别表示10,11,12...
  • 十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。  给出一个非负整数,将它表示十六进制的形式。 输入格式  输入...
  • 十进制转十六进制

    2020-01-10 17:20:10
    十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。给出一个非负整数,将它表示十六进制的形式。 输入格式: 输入包含一个非.....
  • Java程序练习-十六进制转十进制

    千次阅读 2011-10-14 12:47:07
    十六进制转十进制 时间限制: 1000ms内存限制: 65536kB 描述 将十六进制数转换成十进制数 输入 第一行有一个整数T,表示共有T组数据 接下来T行,每一行为一个16进制无符号正整数,位数不超过8位,数中a-f均为...
  • 编一程序,把键入的十六进制数转换成十进制数并在屏幕上显示出来。键入最大数为FFFFH,若键入不是十六进制数,则显示出错提示。
  • 十进制数 60 转换成十六进制过程分析 60的二进制表示:  0000-0000 0000-0000 0000-0000 0011-1100 &0000-0000 0000-0000 0000-0000 0000-1111 //与运算,和15与运算得到60的十六进制的最后一位。 =0000-0000 00

空空如也

空空如也

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

十六进制转成十进制的程序