Java写的十六进制转十进制和Ascii工具
自己写的用来分析封包用的,输入十六进制回车后可显示对应十进制和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工具相关推荐
- Qt十六进制转十进制转ASCII码,附ASCII码表
分享一个Qt十六进制转十进制转ascii码,最近用的比较多,所以将它写成了内联函数 看代码: //返回16进制数的ascii码值 inline int ServeWidget::changefromH ...
- 在LabVIEW中将十六进制转换为十进制或ASCII
更新 Nov 12, 2020 环境 软件 LabVIEW 在LabVIEW中,如何将十六进制值转换为十进制值?当前,我正在尝试使用"扫描值功能",但不确定需要连接什么. 我正在与 ...
- java中实现十六进制和十进制之间的转换
public static void main(String[] args) {//16进制转十进制String str = "060A04000000C2";int num= I ...
- 蓝桥杯java 基础练习 十六进制转十进制
问题描述 从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出. 注:十六进制数中的10~15分别用大写的英文字母A.B.C.D.E.F表示. 样例输入 FFFF 样例输出 6 ...
- 蓝桥杯试题 基础练习 BASIC-11 十六进制转十进制 JAVA——冲刺蓝桥杯第六天
目录 前言 试题 基础练习 十六进制转十进制 要点 思路一:常规做法--进制转换 字符 循环 本题代码 思路二:简单做法,使用java自带的方法 本题代码 前言 进制转化包括这篇我写了三篇了,这篇没讲 ...
- java十六进制转十进制_java十六进制转十进制
java十六进制转十进制 (2017-02-02 20:58:58) 标签: it 分类: 蓝桥杯 问题描述 从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出. 注:十六进 ...
- Java算法学习:java进制转换(十进制转八进制,十进制转二进制,十六进制转八进制)
java进制转换(十进制转八进制,十进制转二进制,十六进制转八进制) 这几天在复习C语言的数据结构栈和队列那一章的时候,看到利用栈的特性FILO实现的进制转换十分简洁 想起了java中实现栈的操作十分 ...
- 一篇博文用Java玩转二进制、十进制、十六进制间的转换
本篇博文不讲废话,只上代码,代码中会有注释.因这两天公司项目中需要用到进制转换,所以细作了研究.(其实jdk提供了进制间转换的方法,主要在Integer类中,寻求简便的可以直接用,不过能自己写方法实现 ...
- java实现十六进制转十进制
参考:https://blog.csdn.net/iczfy585/article/details/92436181 十六进制转十进制 一共两方法,第二个方法是我无意中发现的.个人给推荐第二种方法. ...
最新文章
- 如何把字符串类型转换成整型?
- TinyMCE 4.0b1 发布,全新设计和 API
- OpenCvSharp中CV_8UC1,CV_8UC2等参数的解释
- ai3中文语音补丁_NS 暗黑破坏神3 中文补丁今日上线!刷起来
- DOM Xerces类库使用方法
- linux内核相关知识
- Qt工作笔记-html做界面时,QFileInfo小技巧,获取前端页面
- 阿里云安装mysql5.7_同一服务器上二进制安装mysql5.7和mysql5.6
- WPF TextBox只能输入数字
- 世界级数学家加入华为,曾获菲尔兹奖 网友:终于知道数理化的重要了
- android 画布抗锯齿,android – 如何在画布和路径中进行抗锯齿处理
- android浏览在线ppt,(简单好用的在线查看文件方法)Android 使用AgentWebView在线查看wrold丶ppt丶pdf等文件...
- signature=45ca03a07a2e888fb57b0d2c351110d7,Attention: Docket Number H054a Dec. 31,2004
- 流式套接字:基于TCP协议的Socket网络编程(案例1)
- linux内核奇遇记之md源代码解读之七阵列同步一
- java程序员的待遇_想学java,一般的java程序员的薪资待遇是多少?
- 【示波器专题】示波器带宽对测量的影响
- 行列式计算程序(基于Python)
- C++搭建集群聊天室(十四):群聊功能
- C语言为什么不执行数组下标的有效性检查