自己写的用来分析封包用的,输入十六进制回车后可显示对应十进制和Ascii码,用空格分开。不支持小写的十六进制字符,需要的自己加上,我是没用就偷点懒。代码如下:

进制转换类:

package com.packet;

import javax.naming.spi.DirStateFactory.Result;

/**
* 进制装换类
* @author Acer
*
*/
public class ConvertSystem {

/**
  * 二进制
  */
private static final int DECIMAL=2;

/**
  * 十六进制所占的二进制位数为4位
  */
private static final int SIZE=4;

/*
  * 设置十六进制字符对应的十进制数枚举
  */
private enum SexaEnum{ A(10), B(11), C(12), D(13), E(14), F(15);
  private final int number;
  private SexaEnum(int number) {
   this.number = number;
  }
  public int get(){
   return number;
  }
};

/*
  * 二进制数转换到十进制数
  */
public static String binaryToDecimal(String binary){
  StringBuffer buf=new StringBuffer();
  String[] strBinary=binary.split(" ");//根据空格拆分二进制数
  for(String str:strBinary){//提取二进制数
   StringBuffer strBuf=new StringBuffer(str);
   char[] element=strBuf.reverse().toString().toCharArray();//反转二进制数方便运算
   int digit=0;//次幕
   int result=0;//结果
   for(char temp:element){//提取单个数
    int intNumber=Integer.parseInt(Character.toString(temp));
    intNumber=intNumber*(int)(Math.pow(DECIMAL, digit));//根据位数算结果 算法:位数*2的次幕
    result=result+intNumber;
    digit=digit+1;//次幕加一
   }
   buf.append(result);
   buf.append(" ");
  }
  return buf.toString();
}

/*
  * 十六进制转换为二进制数
  */
public static String sexaDecToBinary(String sexaDec){
  StringBuffer buf=new StringBuffer();
  String[] strSexa=sexaDec.split(" ");//根据空格拆分十六进制数
  for(String str:strSexa){
   char[] element=str.toCharArray();//拆分为单个的位数
   for(char temp:element){
    if(Character.isDigit(temp)){//数字
     int intNumber=Integer.parseInt(Character.toString(temp));
     buf.append(splitBinaryStr(intNumber));
    }else{//十六进制字符
     int intNumber=convertSexa(temp);
     buf.append(splitBinaryStr(intNumber));
    }
   }
   buf.append(" ");
  }
  return buf.toString();
}

/*
  * 根据十进制数字转换为二进制数  四位数
  */
private static String splitBinaryStr(int number){
  StringBuffer result=new StringBuffer();
  boolean key=true;
  if(number!=0){//判断数不为零
   while(key){
    if(number%DECIMAL==0){//求余等于零则该位为零         余数为零的情况
     result.append("0");
     number=number/DECIMAL;//除二运算
    }else if(number>=DECIMAL){//数大于二且求余不等于零        余数为一的情况
     result.append("1");
     number=number/DECIMAL;//除二运算
    }else{
     result.append("1");//最高位情况    进一位
     key=false;
    }
   }
  }
  while(result.length()<4){//少于四位数则补零
   result.append("0");
  }
  return result.reverse().toString();//反转字符串  再返回二进制数
}

/*
  * 根据十六进制字符转换为十进制数字
  */
private static int convertSexa(char temp){
  switch(temp){
   case 'A':
    return SexaEnum.A.get();
   case 'B':
    return SexaEnum.B.get();
   case 'C':
    return SexaEnum.C.get();
   case 'D':
    return SexaEnum.D.get();
   case 'E':
    return SexaEnum.E.get();
   case 'F':
    return SexaEnum.F.get();
   default:
    return 0;
  }
}

}

Ascii码转换类:

package com.packet;

public class ConvertAscii {

public static String convert(String number){
  String result="";
  String[] str=number.split(" ");
  for(String temp:str){
   int code; 
   code = Integer.parseInt(temp, 10); 
   // 如果30代表是 16进制的30话,就取16 
   // 如果30代表是 10进制的30话,就取10 
   // code = Integer.parseInt(source, 10); 
   char strCode = (char) code;
   result+=strCode;
  }
  return result;
}
}
调用类:

package com.packet;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

public static void print(String str){
  String binary=ConvertSystem.sexaDecToBinary(str);
  String number=ConvertSystem.binaryToDecimal(binary);
  System.out.println("Denary System:");
  System.out.println(number);
  String code=ConvertAscii.convert(number);
  System.out.println("Ascii:");
  System.out.println(code);
}

public static void main(String[] args){
  boolean key=true;
  while(key){
   BufferedReader buf=new BufferedReader(new InputStreamReader(System.in));
   String str=null;
   try{
   
    str=buf.readLine();
   }catch(IOException e){
    e.printStackTrace();
   }
   if(str!=null){
    print(str);
   }
  }
}
}

Java写的十六进制转十进制和Ascii工具相关推荐

  1. Qt十六进制转十进制转ASCII码,附ASCII码表

    分享一个Qt十六进制转十进制转ascii码,最近用的比较多,所以将它写成了内联函数 看代码: //返回16进制数的ascii码值 inline int ServeWidget::changefromH ...

  2. 在LabVIEW中将十六进制转换为十进制或ASCII

    更新 Nov 12, 2020 环境 软件 LabVIEW 在LabVIEW中,如何将十六进制值转换为十进制值?当前,我正在尝试使用"扫描值功能",但不确定需要连接什么. 我正在与 ...

  3. java中实现十六进制和十进制之间的转换

    public static void main(String[] args) {//16进制转十进制String str = "060A04000000C2";int num= I ...

  4. 蓝桥杯java 基础练习 十六进制转十进制

    问题描述 从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出. 注:十六进制数中的10~15分别用大写的英文字母A.B.C.D.E.F表示. 样例输入 FFFF 样例输出 6 ...

  5. 蓝桥杯试题 基础练习 BASIC-11 十六进制转十进制 JAVA——冲刺蓝桥杯第六天

    目录 前言 试题 基础练习 十六进制转十进制 要点 思路一:常规做法--进制转换 字符 循环 本题代码 思路二:简单做法,使用java自带的方法 本题代码 前言 进制转化包括这篇我写了三篇了,这篇没讲 ...

  6. java十六进制转十进制_java十六进制转十进制

    java十六进制转十进制 (2017-02-02 20:58:58) 标签: it 分类: 蓝桥杯 问题描述 从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出. 注:十六进 ...

  7. Java算法学习:java进制转换(十进制转八进制,十进制转二进制,十六进制转八进制)

    java进制转换(十进制转八进制,十进制转二进制,十六进制转八进制) 这几天在复习C语言的数据结构栈和队列那一章的时候,看到利用栈的特性FILO实现的进制转换十分简洁 想起了java中实现栈的操作十分 ...

  8. 一篇博文用Java玩转二进制、十进制、十六进制间的转换

    本篇博文不讲废话,只上代码,代码中会有注释.因这两天公司项目中需要用到进制转换,所以细作了研究.(其实jdk提供了进制间转换的方法,主要在Integer类中,寻求简便的可以直接用,不过能自己写方法实现 ...

  9. java实现十六进制转十进制

    参考:https://blog.csdn.net/iczfy585/article/details/92436181 十六进制转十进制 一共两方法,第二个方法是我无意中发现的.个人给推荐第二种方法. ...

最新文章

  1. Learn OpenGL (十二):投光物
  2. PyTorch中文版官方教程来啦(附下载)
  3. 今日工作总结 2022-02-08
  4. fmt-重新格式化段落
  5. select选择框变得可以输入、编辑
  6. 栈和队列之用java实现栈
  7. 递归求n的阶层算法实现
  8. 2019-05-22 防范ASP木马;如何防止注入攻击;
  9. Cesium:通过字符串创建颜色
  10. 未能加载文件或程序集“****”或它的某一个依赖项。试图加载格式不正确的程序。解决方案总结...
  11. 最近amd.dll闹的很火
  12. 大型企业能源管理系统的设计与应用
  13. 大华海康宇视等监控安防摄像头如何通过GB/T28181平台接入到GB28181国标流媒体平台
  14. 烽火超微信息科技 服务器,智算升级 烽火超微发布新一代V6服务器
  15. Android Red5视频通讯第一篇:连接服务器
  16. python卡方拟合性检验_卡方分布、卡方独立性检验和拟合性检验理论及其python实现...
  17. vue 获取HTML源码
  18. H5微信授权登录 H5支付 外部浏览器微信支付 前端一个函数搞
  19. 一台电脑登陆两个微信账号
  20. node下载文件 解压压缩包

热门文章

  1. 安装交叉编译工具:arm-himix200-linux
  2. redis中AOF自动重写条件
  3. 中国人民大学孟生旺教授《金融数学》资源
  4. MySQL中实现rank排名查询
  5. Win32绘图总结篇(点、直线、折线、贝塞尔曲线、矩形、椭圆、圆弧、弓形、扇形、多边形等)
  6. nss版本 linux,在CentOS系统中VSCode无法启动原来是NSS版本过低
  7. 一文看懂中国的运营商入库认证(中国联通入库指南)
  8. 大众点评Java开发实时应用监控平台-CAT
  9. Stay Hungry Stay Foolish的真正含义
  10. 遗传算法解决旅行商问题(Python版)