当前位置:   article > 正文

从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。_从键盘输入一行长度不超过8个字符的16进制字符串并保存到数组s中,再把该字符串转

从键盘输入一行长度不超过8个字符的16进制字符串并保存到数组s中,再把该字符串转
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4. /*
  5. * 从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
  6. * 注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
  7. */
  8. public class Main {
  9. public static void main(String[] args) throws IOException {
  10. BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
  11. String s1="";
  12. String s2="";
  13. long sum=0; //定义long型变量
  14. String s = reader.readLine();
  15. //char []ArrOld = s.toCharArray();不需要转换
  16. s1=s.toUpperCase();//将s中的小写字母转换为大写字母
  17. /* int i=0;
  18. while(ArrOld[i]!='\0') //java 的字符数组没有结束符!!!!!!!
  19. {
  20. char []ArrNew = new char[ArrOld.length];
  21. ArrNew[i]=(char)(ArrOld[i]-26);
  22. System.out.println(ArrNew);
  23. s=new String(ArrNew);
  24. i++;
  25. }*/
  26. s2=hexToBinary(s1);
  27. for(int i=0;i<s2.length();i++)
  28. {
  29. /* System.out.println(s2.charAt(s2.length()-i-1));
  30. System.out.println(PowerTwo(i)); */
  31. /* long k=Integer.valueOf(s2.charAt(s2.length()-i-1));
  32. System.out.println("p:::"+p);
  33. System.out.println("k:::"+k); */
  34. sum+=((s2.charAt(s2.length()-i-1))-48)*PowerTwo(i);//字符串的0只能转换成int型的48
  35. }
  36. System.out.println(sum);
  37. }
  38. public static long PowerTwo(int i){ //返回long型数据,否则int型可能会越界
  39. long n=1;
  40. if(i==0)
  41. {
  42. return 1;
  43. }else
  44. {
  45. for(int j=0;j<i;j++)
  46. n=n*2;
  47. return n;
  48. }
  49. }
                //十六进制转换为二进制算法
  1. public static String hexToBinary(String hexNum){
  2. char[] chs = {'0','1'};
  3. String str = new String("0123456789ABCDEF");
  4. char[] charArray = hexNum.toCharArray();
  5. int pos = charArray.length*4;
  6. char[] binaryArray = new char[pos];
  7. for (int i = charArray.length - 1; i >=0; i--) {
  8. int temp = str.indexOf(charArray[i]);
  9. for(int j=0;j<4;j++){
  10. binaryArray[--pos] = chs[temp & 1];
  11. temp = temp >>> 1;
  12. }
  13. }
  14. return new String(binaryArray);
  15. }
  16. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/244581
推荐阅读
相关标签
  

闽ICP备14008679号