16进制转化

上几篇我已经介绍了各种进制转化的代码,本人觉得有点投机取巧,所以今天敲了一些比较 “靠谱的” 代码,希望大家有所帮助!

10进制转16进制:

import java.util.*;

public class 10to16 {
	
	public static void main(String[] args){
		Scanner in=new Scanner(System.in);
		int num=in.nextInt();
		int[] f=new int [100];
		int cnt=0;
		while(num!=0) {
			if(num%16==0) {
				f[cnt++]=0;
				num/=16;
			}
			else {
				f[cnt++]=num%16;
				num/=16;	
			}
		}
		for(int i=cnt-1;i>=0;i--) {
			if(f[i]==15)
				System.out.print("F");
			if(f[i]==14)
				System.out.print("E");
			if(f[i]==13)
				System.out.print("D");
			if(f[i]==12)
				System.out.print("C");
			if(f[i]==11)
				System.out.print("B");
			if(f[i]==10)
				System.out.print("A");
			if(f[i]>=0 && f[i]<=9)
				System.out.print(f[i]);
		}
	}
}

最后的输出肯定还有更好的解决方案,不过我实在想不出了,如果大家有什么好的解决方案,评论留言!

10进制转8进制

import java.util.*;

public class 10to8 {
	
	public static void main(String[] args){
		Scanner in=new Scanner(System.in);
		int num=in.nextInt();
		int[] f=new int [100];
		int cnt=0;
		while(num!=0) {
			if(num%8==0) {
				f[cnt++]=0;
				num/=8;
			}
			else {
				f[cnt++]=num%8;
				num/=8;	
			}
		}
		for(int i=cnt-1;i>=0;i--) {
		System.out.print(f[i]);
		}
	}
}

10进制转2进制

代码

跟上面的差不多,就是把数字8换成2,就 ojbk 啦,我就不敲了!

2进制转10进制

import java.util.*;

public class 2to10 {
	
	public static void main(String[] args){
		Scanner scanner = new Scanner(System.in);
		int n = scanner.nextInt();
		int num=0,nums=0,ns;
		for(int i=0;n>0;i++) {
			ns=n%10;
			num=(int) (ns*Math.pow(2,i));
			nums+=num;
			n/=10;
		}
		System.out.println(nums);
	}
}

2进制转8进制

代码

跟上面的差不多,就是把数字2换成8,就 ojbk 啦,我就不敲了!

16转10有点难度,想了一下,不过还是写出啦!

16进制转10进制

import java.util.*;

public class 16to10 {
	
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		String n = sc.nextLine();
	        int count =0;
		int num=0,nums=0,ns=0;
		for(int i=n.length()-1;i>=0;i--) {
			char x= n.charAt(i);
			if(x>='0'&&x<='9') {
				ns= (int)(x-48);
				num=(int) (ns*Math.pow(16,count));
			}
			if(x>='A'&&x<='F') {
				ns= (int)(x-64+9);
				num=(int) (ns*Math.pow(16,count));
			}
			        nums+=num;
				    count++;
		}
		System.out.println(nums);
	}
}

代码我就先敲到这里了,其他的16转8,8转2等等,也是很简单的,比如16转8:16转10,10转8;有时间我再一一奉上!嘿嘿!加油!

谢谢我目前唯一的粉丝!

16进制转化10进制的方法有很多,以下是两种常用的方法: 1. 直接换法:将16进制数的每一位转化10进制数的对应数位,然后相加得到10进制数的结果。 举个例子,将16进制数0x32F换为10进制数的过程如下: ``` 3 2 F 3*(16^2)+2*(16^1)+15*(16^0)=815 ``` 所以,0x32F换为10进制数为815。 演示代码如下(C语言)[^1]: ```c #include <stdio.h> #include <stdlib.h> int main() { char hex[10]; printf("Enter the hex number: "); scanf("%s", hex); int dec = strtol(hex, NULL, 16); printf("Decimal number is %d\n", dec); return 0; } ``` 2. 除法取余法:将16进制数每一位乘以对应的权值,然后相加求和,权值为16的幂。例如对于16进制数0x32F,其每一位的权值为16^2、16^1和16^0,所以将0x32F换为10进制数的过程如下: ``` 3 2 F 16^2 16^1 16^0 -------------------- 768 32 15 ------- ``` 所以,0x32F换为10进制数为815。 演示代码如下(C语言): ```c #include <stdio.h> #include <math.h> int main() { char hex[10]; int i, length, decimal = 0; printf("Enter the hex number: "); scanf("%s", hex); length = strlen(hex); for (i = 0; hex[i] != '\0'; i++, length--) { if (hex[i] >= '0' && hex[i] <= '9') { decimal += (hex[i] - '0') * pow(16, length - 1); } else if (hex[i] >= 'a' && hex[i] <= 'f') { decimal += (hex[i] - 'a' + 10) * pow(16, length - 1); } else if (hex[i] >= 'A' && hex[i] <= 'F') { decimal += (hex[i] - 'A' + 10) * pow(16, length - 1); } } printf("Decimal number is %d\n", decimal); return 0; } ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨rz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值