博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 十六进制数的转换
阅读量:6201 次
发布时间:2019-06-21

本文共 1846 字,大约阅读时间需要 6 分钟。

   今天晚上做了一道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);
 }

}

 

 

转载地址:http://ietca.baihongyu.com/

你可能感兴趣的文章
C. Polycarpus' Dice Codeforces Round #298 (Div. 2)
查看>>
NoSql Cassandra
查看>>
地理坐标系与投影坐标系的区别
查看>>
转:ASP.NET基于角色的窗体安全认证机制
查看>>
Git 分支管理
查看>>
远程SSH连接服务与基本排错
查看>>
Spring Boot 整合 Elasticsearch,实现 function score query 权重分查询
查看>>
重写ResultSet实现分页功能(最好的分页技术)(转)
查看>>
KMP算法的Next数组详解(转)
查看>>
用Vim搭建C/C++开发环境
查看>>
关于box-shadow和drop-shadow的显著区别
查看>>
POJ 刷题进程.2
查看>>
安装php xdebug扩展
查看>>
[PHP] 算法-二叉树的子结构判断的PHP实现
查看>>
python re.sub
查看>>
Spring Cache 配置及一些问题的解决
查看>>
ASP.NET MVC 3 网站优化总结(六)压缩 HTML
查看>>
透彻理解块级元素的宽度
查看>>
把图片存入数据库
查看>>
冒泡排序
查看>>