zoukankan      html  css  js  c++  java
  • java 十六进制数的转换

       今天晚上做了一道java基础题,题目看起来简单,但是实现起来却花了我近两个小时的时间,认真的做这道题,你会发现它特别考你的基本功。有兴趣的可以试一下哦。

       题目: 请用此语言编写如下函数,采用自己的算法,不要使用 printf, sprintf,Format, toString, itoa,toHex等函数。

                      函数名称 TQ_GetHexStringEx

                      参数

                               整数 iNumber  

                               整数 iCount

                      返回值

                             字符串类型

                     函数描述

                             获得表示iNumber十六进制字符串,宽度不足iCount时,前面补0

                      举例

                               TQ_GetHexStringEx(12,2);   返回 “0C”

                               TQ_GetHexStringEx(12,8);   返回 “000000C

    下面是两种实现方式,不过第二种用到了toString方法。大家有好的算法,欢迎拍砖。

    实现一:

    package test;

    import java.io.*;

    public class ToHexTest {
     
     public String s="";
     
     public static void main(String arg[]) {
      ToHexTest a = new ToHexTest();
      System.out.print(a.TQ_GetHexStringEx(12,8));
     }
     
     public String TQ_GetHexStringEx(int iNumber,int iCount){
      HexString(iNumber);
      int length=s.length();
      for(int i=0;i<iCount-length;i++)
      {
       s="0"+s;
      }
      return s;
     }

     //编写数的十六进制
     public void HexString(int x) {
      if (x > 0)
       HexString(x / 16);
      else
       return;
      if (x % 16 == 10) {
       s=s+"A";
      } else if (x % 16 == 11) {
       s=s+"B";
      } else if (x % 16 == 12) {
       s=s+"C";
      } else if (x % 16 == 13) {
       s=s+"D";
      } else if (x % 16 == 14) {
       s=s+"E";
      } else if (x % 16 == 15) {
       s=s+"F";
      } else
      s=s+x % 16;
     }
    }

    实现二:


     

    package test;

    import java.io.*;

    public class ToHex {
     public static void main(String arg[]) {
      ToHex a = new ToHex();
      System.out.print(a.TQ_GetHexStringEx(12, 8));
     }
     
     public String TQ_GetHexStringEx(int iNumber,int iCount){
      StringBuffer sb=new StringBuffer();
      StringBuffer sb1=new StringBuffer();
      HexString(iNumber,sb);
      for(int i=0;i<iCount-sb.length();i++)
      {
       sb1.append("0");
      }
      return sb1.append(sb).toString();
     }

     //编写数的十六进制
     public void HexString(int x,StringBuffer sb) {
      if (x > 0)
       HexString(x / 16,sb);
      else
       return;
      if (x % 16 == 10) {
       sb.append("A");
      } else if (x % 16 == 11) {
       sb.append("B");
      } else if (x % 16 == 12) {
       sb.append("C");
      } else if (x % 16 == 13) {
       sb.append("D");
      } else if (x % 16 == 14) {
       sb.append("E");
      } else if (x % 16 == 15) {
       sb.append("F");
      } else
       sb.append(x % 16);
     }

    }

  • 相关阅读:
    LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
    C语言控制台窗体图形界面编程(总结)
    linux下c程序 daemon、fork与创建pthread的顺序问题
    内存动态分配与释放
    MyReport报表系统v1.2公布
    AutoLayout初战----Masonry与FDTemplateLayoutCell实践
    算法与数据结构题目的 PHP 实现:栈和队列 设计一个有 getMin 功能的栈
    药店从业者,不能不知的数据分析方法
    药店从业者,不能不知的数据分析方法
    SAS之大话PDV
  • 原文地址:https://www.cnblogs.com/suncoolcat/p/3367847.html
Copyright © 2011-2022 走看看