您的位置:首页 > 其它

十进制转为十六进制

2015-12-22 00:00 260 查看
摘要: 将一个十进制字符串转为十六进制数值字符串

实现一个函数将一个字符串转为十六进制数值字符串。如输入字符串“15”,则十六进制串为:“F”;如输入“32”,则为“20”;

如输入“163”,则为“A3”。要求不得使用atoi、printf、sprintf、Integer.parseString、String.parseInt、Long.vauleOf、

Integer.valueOf等系列方法。

思路:首先将字符串字符串转成十进制数字,然后再转换成十六进制字符。

import java.io.IOException;

public class StringToHex {

public static void main(String[] args) {

String str = getInputMessage();
long decDigit = stringToDec(str);
String HexString = stringToHex(decDigit);
System.out.println(HexString);

}
/**
* 十进制数转换为十六进制字符串
* @param decDigit
* @return
*/
private static String stringToHex(long decDigit) {

if (decDigit == 0) {
return "0";
}
//判断是否为负
boolean isNegative = false;

if (decDigit < 0 ) {
isNegative = true;
decDigit = 0 - decDigit;
}
String hexStr = "";
int a = 0 ;
long b = 0;
while(decDigit>0){
b = decDigit / 16;
a =(int) (decDigit- b*16);
decDigit = b;
if (a>=10) {
switch (a) {
case 10:
hexStr ='A'+hexStr;
break;
case 11:
hexStr ='B'+hexStr;
break;
case 12:
hexStr ='C'+hexStr;
break;
case 13:
hexStr ='D'+hexStr;
break;
case 14:
hexStr ='E'+hexStr;
break;
case 15:
hexStr ='F'+hexStr;
break;
default:
break;
}
}
else{
hexStr =a +hexStr;
}
}
if (isNegative) {
return '-'+hexStr;
}
return hexStr;
}
/**
* 	//从字符串转化成十进制数
* @param str
* @return
*/
private static long stringToDec(String str) {
//假设原字符串是合法的,而且长度不超过32位.
long decDigit = 0;

boolean isNegative = false;
for (int i = str.length()-1; i >= 0; i--) {
if (str.charAt(i)=='-') {
isNegative = true;
break;
}
else
decDigit = decDigit+(long) ((str.charAt(i) - '0')*Math.pow(10, str.length()-i-1));
}
if (isNegative) {
decDigit = 0 - decDigit;
}
return decDigit;
}
public static String getInputMessage(){
//        System.out.println("请输入您的命令∶");
byte buffer[]=new byte[1024];
int count = 0;
try {
count = System.in.read(buffer);
} catch (IOException e) {
e.printStackTrace();
}
char[] ch=new char[count-2];//最后两位为结束符,删去不要
for(int i=0;i<count-2;i++)
ch[i]=(char)buffer[i];
String str=new String(ch);
return str;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: