算法:进制之前的转换
2023-12-13 07:30:30
1. X进制转换成十进制-V1:
/**
* 笨办法,从左往右开始
* Tips:只支持正数
*
* @param num
* @param radix
* @return
*/
private static Integer xToTenV1(String num, Integer radix) {
if (num.length() == 0 || num.charAt(0) == '-') {
throw new IllegalArgumentException();
}
String[] arrays = num.split("");
int len = arrays.length;
int result = 0, digit = 0, digitRadix = 1;
for (int i = 0; i < len; i++) {
digit = Integer.parseInt(arrays[len - 1 - i]);
if (i != 0) {
digitRadix *= radix;
}
result += digit * digitRadix;
}
return result;
}
2. X进制转换成十进制-V2:
/**
* 参照Integer.parseInt(String s,int radix) 方法
* 核心逻辑:
* result*=radix;
* result-=digit;
* return -result;
* Tips:只支持正数
*
* @param num
* @param radix
* @return
*/
private static Integer xToTenV2(String num, Integer radix) {
if (num.length() == 0 || num.charAt(0) == '-') {
throw new IllegalArgumentException();
}
String[] arrays = num.split("");
int len = arrays.length;
int result = 0, digit = 0;
for (int i = 0; i < len; i++) {
digit = Integer.parseInt(arrays[i]);
result *= radix;
result -= digit;
}
return -result;
}
3. 十进制转换成X进制:
/**
* Tips:只支持正数
*
* @param mun
* @param radix
* @return
*/
public static String tenTox(int mun, int radix) {
if (mun < 0) {
throw new IllegalArgumentException();
}
StringBuilder sb = new StringBuilder();
int[] array = new int[33];
int index = 32;
// 短除法
while (mun >= radix) {
array[index--] = mun % radix;
mun = mun / radix;
}
array[index] = mun;
for (int i = index; i < 33; i++) {
sb.append(array[i]);
}
return sb.toString();
}
文章来源:https://blog.csdn.net/huantai3334/article/details/131834434
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!