十进制转换成二进制,八进制,十六进制
发布网友
发布时间:2022-05-29 20:35
我来回答
共2个回答
热心网友
时间:2023-11-23 13:03
用下面的程序转换,你只需要输出成表格的形式就行了!!!
package com.test.numsys;
import java.util.*;
/**
* 数值转换 十进制 二进制 八进制 十六进制
*/
public class NumSys {
public static void main(String[] args) {
NumSys ns = new NumSys();
System.out.println("十进制100转换为二进制为:" + ns.decimalToBinary(100));//1100100
System.out.println("二进制1100100转换为八进制为: " + ns.binaryToOctal(1100100));// 144
System.out.println("二进制10110000011101转换为十六进制为:" + ns.binaryToHex("10110000011101")); //2C1D
System.out.println("十进制100转换为八进制:" + ns.DecimalToOctal(100));
System.out.println("十进制15400转换为十六进制:" + ns.DecimalToHex(15400));
}
//没有实现小数部分的转化 十进制转换为二进制
public long decimalToBinary(int a) {
long binary = 0L;
int[] binaryArr = new int[64];
int i = 0;
do {
binaryArr[i] = a%2;
a = a/2;
i ++;
} while(a != 0);
String s = "";
for(int j = binaryArr.length-1; j>=0; j--) {
s+=binaryArr[j] + "";
}
binary = Integer.parseInt(s);
return binary;
}
//二进制转换为八进制
public String binaryToOctal(long a) {
String octal = "";
String s = a +"";
char [] c_temp = (a+"").toCharArray();
int temp = 3 - c_temp.length%3;
for(int i = 0; i<temp ; i++) {
s = "0" + s;
}
char[] c2 = s.toCharArray();
List<String> list = new ArrayList<String>();
for(int i = 0 ; i < c2.length ; i += 3 ) {
String stemp = c2[i] +""+ c2[i+1] +""+ c2[i+2];
if(stemp.equals("000")) {
list.add("0");
} else if(stemp.equals("001")) {
list.add("1");
} else if(stemp.equals("010")) {
list.add("2");
} else if(stemp.equals("011")) {
list.add("3");
} else if(stemp.equals("100")) {
list.add("4");
} else if(stemp.equals("101")) {
list.add("5");
} else if(stemp.equals("110")) {
list.add("6");
} else if(stemp.equals("111")) {
list.add("7");
}
}
for(Iterator<String> it = list.iterator(); it.hasNext();) {
octal += it.next();
}
return octal;
}
public String binaryToHex(String a) {
String hex = "";
String s = a;
char [] c_temp = (a+"").toCharArray();
int temp = 4 - c_temp.length%4;
for(int i = 0; i<temp ; i++) {
s = "0" + s;
}
//System.out.println("-----"+s);
char[] c2 = s.toCharArray();
List<String> list = new ArrayList<String>();
for(int i = 0 ; i < c2.length ; i += 4 ) {
String stemp = c2[i] +""+ c2[i+1] +""+ c2[i+2] +""+ c2[i+3];
if(stemp.equals("0000")) {
list.add("0");
} else if(stemp.equals("0001")) {
list.add("1");
} else if(stemp.equals("0010")) {
list.add("2");
} else if(stemp.equals("0011")) {
list.add("3");
} else if(stemp.equals("0100")) {
list.add("4");
} else if(stemp.equals("0101")) {
list.add("5");
} else if(stemp.equals("0110")) {
list.add("6");
} else if(stemp.equals("0111")) {
list.add("7");
} else if(stemp.equals("1000")) {
list.add("8");
} else if(stemp.equals("1001")) {
list.add("9");
} else if(stemp.equals("1010")) {
list.add("A");
} else if(stemp.equals("1011")) {
list.add("B");
} else if(stemp.equals("1100")) {
list.add("C");
} else if(stemp.equals("1101")) {
list.add("D");
} else if(stemp.equals("1110")) {
list.add("E");
} else if(stemp.equals("1111")) {
list.add("F");
}
}
for(Iterator<String> it = list.iterator(); it.hasNext();) {
hex += it.next();
}
return hex;
}
//十进制转换为八进制
public String DecimalToOctal(int d)
{
String o = "";
if (d < 8)
{
o = d+"";
}
else
{
int c;
int s=0;
int n=d;
while (n >= 8)
{
s++;
n = n / 8;
}
int[] m = new int[s];
int i = 0;
do
{
c = d / 8;
m[i++] = d % 8;
d = c;
} while (c >= 8);
o = d+"";
for (int j = m.length - 1; j >= 0; j--)
{
o += m[j];
}
}
return o;
}
//十进制转十六进制
public String DecimalToHex(int d)
{
String x = "";
if (d < 16)
{
x = chang(d);
}
else
{
int c;
int s = 0;
int n = d;
while (n >= 16)
{
s++;
n = n / 16;
}
String [] m = new String[s];
int i = 0;
do
{
c = d / 16;
m[i++] = chang(d % 16);//判断是否大于10,如果大于10,则转换为A~F的格式
d = c;
} while (c >= 16);
x = chang(d);
for (int j = m.length - 1; j >= 0; j--)
{
x += m[j];
}
}
return x;
}
//判断是否为10~15之间的数,如果是则进行转换
public String chang(int d)
{
String x = "";
switch (d)
{
case 10:
x = "A";
break;
case 11:
x = "B";
break;
case 12:
x = "C";
break;
case 13:
x = "D";
break;
case 14:
x = "E";
break;
case 15:
x = "F";
break;
default:
x = d+"";
break;
}
return x;
}
}
热心网友
时间:2023-11-23 13:03
不好意思。。我是将十进制转换成二进制,八进制,十六进制字符串!
#include <iostream.h>
#include <string.h>
char* d2x(int d,char*x,int mode);
void main()
{
int d=42;
char b[10];
char o[10];
char h[10];
//d2x(d,x,16);
cout<<"decimal \t binary \t octal \t hexadecimal"<<endl;
for(int i=1;i<=256;i++)
{
memset(b,0,10);
memset(o,0,10);
memset(h,0,10);
cout<<i<<" \t\t "<<d2x(i,b,2)<<" \t\t "<<d2x(i,o,8)<<" \t\t "<<d2x(i,h,16)<<endl;
}
}
char* d2x(int d,char*x,int mode)
{
char temp[2];
temp[1]=0;
do
{
if(d%mode>9)
{
temp[0]=(d%mode)%10+'A';
}else
temp[0]=d%mode+'0';
d=d/mode;
strcat(x,temp);
}while(d!=0);
strcpy(x,strrev(x));
return x;
}