package top.actim.test08;
public class Solution {
/**
* 将输入的十进制数字转换为对应的二进制字符串和十六进制字符串
*
* @param number string字符串 十进制数字字符串
* @return string字符串
*/
public String changeFormatNumber(String number) {
String an = null;
char[] ans = new char[21];
ans[16] = ',';
char[] map = {
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
// write code here
try {
int num = Integer.parseInt(number);
if (num > Short.MAX_VALUE || num < Short.MIN_VALUE) {
an = "NODATA";
} else {
int temp = 65536 + num;
int i = 15;
while (i >= 0) {
ans[i] = temp % 2 == 1 ? '1' : '0';
temp /= 2;
i--;
}
temp = 65536 + num;
i = 20;
while (i > 16) {
ans[i] = map[(int) (temp % 16L)];
temp /= 16;
i--;
}
an = new String(ans);
}
} catch (NumberFormatException ex) {
an = "INPUTERROR";
}
return an;
}
public static void main(String[] args) {
System.out.println(new Solution().changeFormatNumber("16"));
System.out.println(new Solution().changeFormatNumber("-16"));
System.out.println(new Solution().changeFormatNumber("A"));
System.out.println(new Solution().changeFormatNumber("65536"));
/*
** 0000000000010000,0010
** 1111111111110000,FFF0
** INPUTERROR
** NODATA
*/
}
}
【2020.10.01 兴业数金】进制转换、补码
猜你喜欢
转载自blog.csdn.net/Activity_Time/article/details/108892804
今日推荐
周排行