十进制转为十六进制
2015-12-22 00:00
260 查看
摘要: 将一个十进制字符串转为十六进制数值字符串
实现一个函数将一个字符串转为十六进制数值字符串。如输入字符串“15”,则十六进制串为:“F”;如输入“32”,则为“20”;
如输入“163”,则为“A3”。要求不得使用atoi、printf、sprintf、Integer.parseString、String.parseInt、Long.vauleOf、
Integer.valueOf等系列方法。
思路:首先将字符串字符串转成十进制数字,然后再转换成十六进制字符。
实现一个函数将一个字符串转为十六进制数值字符串。如输入字符串“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; } }
相关文章推荐
- 计数器/定时器8253的基本介绍和功能——(一)
- 计数器/定时器8253的基本介绍和功能——(二)
- 高德地图学习系列
- OSC 职位推荐:借我 3 分钟,还你一个更好的机会
- BlockQueue使用之简单应用
- kali 更新源 sources.list以及apt-get 相关命令说明
- Linux 每日一练习!!!!!!!!!!sleep 表示等待时间
- Linux 每日一练习!!!!!!!!!!删除文件的大灾难,你会碰见吗?
- 写给即将入行的程序员的一封信
- 程序员技术练级攻略
- Git详解之三 Git分支
- 自动连接服务器
- deferred Transports Protocols 简单介绍
- web前后端 技术栈
- hive的工作机制
- mycncart之后台显示在线人数
- SQL、Linq、lamda表达式 同一功能不同写法
- Cloudera Manager内部结构、功能包括配置文件、目录位置
- CM、CDH卸载
- 小说网接口,根据书库号和小说名查询