用JAVA怎样实现十进制,八进制,二进制,十六进制的相互转换,求解

用JAVA怎样实现十进制,八进制,二进制,十六进制的相互转换,求解,第1张

/
比较原始的方案,可供学习原理
/

import javautilScanner;
/

@author Administrator
/
public class Test_math {

public static void main(String args[]) {
Scanner in =new Scanner(Systemin);
int m,n;//m进制转n进制
Systemoutprintln("输入原始数据进制:");
m=innextInt();
Systemoutprintln("请输入目标数据进制");
n=innextInt();
Systemoutprintln("输入要转换的数据");
innextLine();
String s=innextLine();
int x10=0;

if(m!=10)
{
x10=Test_mathm_to_ten(s, m);
}
else
{
x10=IntegerparseInt(s);
}
if(n==10)
{
Systemoutprintln("结果:"+x10);
return;
}
String ans=Test_math十进制转m进制(x10, n);

Systemoutprintln("结果:"+ans);
// int d = 1458;
// String s2 = Test_math十进制转m进制(d, 16);
// Systemoutprintln(s2);
// s2 = "100100";
// d = Test_mathbin_to_ten(s2);
// Systemoutprintln(d);
// Systemoutprintln(Test_mathm_to_ten("AA", 16));
}
public static int m_to_ten(String s, int m) {
int d = 0;
int len = slength();
for (int i = 0; i < len; i++) {
String t = StringvalueOf(scharAt(i));
switch(scharAt(i))
{
case 'A': case 'a': t="10"; break;
case 'B': case 'b': t="11"; break;
case 'C': case 'c': t="12"; break;
case 'D': case 'd': t="13"; break;
case 'E': case 'e': t="14"; break;
case 'F': case 'f': t="15"; break;
}
int ds = IntegerparseInt(t) (int) Mathpow(m, (len - i - 1));
d += ds;
}
return d;
}

public static String 十进制转m进制(int s, int m) {
String ans = "";
int n = (int) (Mathlog(s) / Mathlog(m)) + 1;
int[] c = new int[n];
c = Test_math十进制转m进制(s, m, n);
for (int i = 0; i < n; i++) {
if (m == 16 && c[i] >= 10) {
switch (c[i]) {
case 10:
ans += "A";
break;
case 11:
ans += "B";
break;
case 12:
ans += "C";
break;
case 13:
ans += "D";
break;
case 14:
ans += "E";
break;
case 15:
ans += "F";
break;
}
} else {
ans += c[i];
}
}

return ans;
}
public static int[] 十进制转m进制(int s, int m, int n) {
//Systemoutprintln(" \n s="+s+"m="+m+ " n="+n);
//十进制转m进制,并凑出n位数,存到一个数组中返回
int[] ans = new int[n];
for (int i = 0; i < n; i++) {
ans[i] = 0;
}
int 当前位 = n - 1;
while (s >= m) {
//Systemoutprintln("s="+s+" 当前位="+当前位);
ans[当前位] = s % m;
当前位--;
s = s / m;
}
ans[当前位] = s;
return ans;
}
}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13411162.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-31
下一篇 2023-07-31

发表评论

登录后才能评论

评论列表(0条)

保存