`
MacTavish
  • 浏览: 2135 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

Java 实现控制台输入任意字符,转换成十六进制、二进制和十进制

    博客分类:
  • Java
阅读更多
import java.io.*;

public class StringtoNum {
	/*
	 * 16进制数字字符集
	 */
	private static String hexString = "0123456789ABCDEF";

	/*
	 * 将字符串编码成16进制数字,适用于所有字符(包括中文)
	 */
	public static String encode(String str) {
		// 根据默认编码获取字节数组
		byte[] bytes = str.getBytes();
		StringBuilder sb = new StringBuilder(bytes.length * 2);
		// 将字节数组中每个字节拆解成2位16进制整数
		for (int i = 0; i < bytes.length; i++) {
			sb.append(hexString.charAt((bytes[i] & 0xf0) >> 4));
			sb.append(hexString.charAt((bytes[i] & 0x0f) >> 0));
		}
		return sb.toString();
	}

	/*
	 * 将16进制数字解码成字符串,适用于所有字符(包括中文)
	 */
	public static String decode(String bytes) {
		ByteArrayOutputStream baos = new ByteArrayOutputStream(
				bytes.length() / 2);
		// 将每2位16进制整数组装成一个字节
		for (int i = 0; i < bytes.length(); i += 2)
			baos.write((hexString.indexOf(bytes.charAt(i)) << 4 | hexString
					.indexOf(bytes.charAt(i + 1))));
		return new String(baos.toByteArray());
	}
	
	/**  
	 *   
	 * @param hexString  
	 * @return 将十六进制转换为字节数组  
	  */  
	public static byte[] HexStringToBinary(String hexStr){   
		//hexString的长度对2取整,作为bytes的长度   
		int len = hexStr.length()/2;   
		byte[] bytes = new byte[len];   
		byte high = 0;//字节高四位   
		byte low = 0;//字节低四位   
		
		for(int i=0;i<len;i++){   
			//右移四位得到高位   
			high = (byte)((hexString.indexOf(hexStr.charAt(2*i)))<<4);   
			low = (byte)hexString.indexOf(hexStr.charAt(2*i+1));   
			bytes[i] = (byte) (high|low);//高地位做或运算   
		}   
		return bytes;   
	}  

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String str = null;
		try {
			System.out.println("Enter the string: ");
			str = br.readLine();
			System.out.println("Convert the string to hexString: ");
			System.out.println(StringtoNum.encode(str));
			System.out.println("Convert the hexString to binaryString: ");
			System.out.println(Integer.toBinaryString(Integer.parseInt(StringtoNum.encode(str), 16)));
			System.out.println("Convert the hexString to int: ");
			System.out.println(Integer.parseInt(StringtoNum.encode(str), 16));
			System.out.println("Convert the hexString to string: ");
			System.out.println(StringtoNum.decode(StringtoNum.encode(str)));
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

分享到:
评论

相关推荐

    十六进制转十进制VC程序

    标题"十六进制转十进制VC程序"指出,这是一个使用Visual C++(简称VC)编写的程序,它的功能是将十六进制的数字或字符串转换成等值的十进制形式。这个小程序可能包含一个简单的用户界面,让用户输入十六进制数值或者...

    汇编程序 二进制转十六进制

    主程序`main`中,通过一系列寄存器操作和调用子程序实现了从接收用户输入、二进制到十进制的转换、再到十六进制的转换的全过程。程序首先保存数据段描述符到DS和ES寄存器,然后依次调用了`decibin`(二进制到十进制...

    C#进制转换器源码,包含十进制十六进制二进制

    在C#这种面向对象的编程语言中,进行十进制、十六进制和二进制之间的转换是常见的操作,尤其是在处理数值计算、数据存储或网络通信等问题时。下面我们将深入探讨C#中如何实现这些转换。 一、十进制与十六进制之间的...

    使用java将十进制整数转换为二进制数

    本代码信息: 使用语言:java 功能:将整数(包括正负整数)转换成对应的二进制数,然后再控制台上显示。

    用java程序实现各进制转换

    在本文中,我们将讨论如何使用Java实现各进制转换,包括十进制到二进制、八进制和十六进制的转换。 在Java中,我们可以使用Integer类提供的方法来实现进制转换。Integer类提供了多种方法来将十进制数转换为其他进制...

    c# 二进制与十进制的转换

    这将把十进制数21转换成二进制字符串"10101"。 ### 3. 控制台应用程序示例 创建一个简单的C#控制台应用程序来演示这些转换: ```csharp using System; class Program { static void Main() { Console....

    VC++中实现十进制实数向二进制八进制十六进制的转换

    在VC++编程环境中,进行十进制实数到二进制、八进制和十六进制的转换是一项常见的任务。这个简单的控制台程序提供了一种方法来解决这个问题,它涉及了基本的数据类型转换和字符串操作。以下是实现这些转换的关键知识...

    JAVA 十进制数转二进制数

    输入一个整十进制数n,把它转化为二进制,小数部分还没有考虑。。。

    十进制转十六进制 C语言.docx

    在计算机科学中,不同的进制系统用于表示数值,其中最常用的是十进制、二进制和十六进制。在C语言中,处理不同进制转换是常见的编程任务。本篇文档关注的是如何将十进制数转换为十六进制数,通过一个迭代的C语言函数...

    易语言控制台进制转换源码

    例如,要将十进制数转换为二进制,我们可以先用“整数解析”函数将用户的输入转换为十进制整数,然后使用位运算(如“按位与”、“按位左移”等)配合循环来实现二进制的计算。最后,用“整数到字符串”函数以二进制...

    STM32串口实验+自定义协议接收16进制数据+发送1个(2个)字符+发送字符串函数.zip

    5. **十六进制转十进制**:从两个连续的十六进制数字中提取数据,并转换成十进制。这需要了解十六进制与十进制之间的转换规则,以及如何正确处理高四位和低四位。 6. **发送一个字节函数**:实现一个函数用于发送...

    一个简单二进制与十进制的转换器

    本项目"一个简单二进制与十进制的转换器"就是基于这样的原理,利用C语言编写了一个控制台程序,用户可以输入一个十进制数或二进制数,程序会返回相应的转换结果。在开发过程中,开发者可能参考了如鹏网的教程,这类...

    进制转换HexConversionUtility.rar

    本文将深入探讨标题为"进制转换HexConversionUtility.rar"的资源,它是一个C#实现的进制转换工具,能够方便地在二进制、八进制、十进制和十六进制之间进行转换。 首先,让我们了解进制的基本概念。进制是数字系统的...

    文件的十六进制显示易精经例程

    在IT领域,对数据进行分析和处理时,我们经常需要将二进制数据转换成可读性更强的十六进制表示。"文件的十六进制显示易精经例程"是一个针对这一需求的实例,它涵盖了如何将字节集转换为十六进制文本,以及在处理过程...

    进制转化程序 Java实现

    这个程序接收用户输入的十进制数字,然后使用Java内置的转换方法生成对应的二进制、八进制和十六进制字符串,并将这些结果输出到控制台。这就是`transform`文件的核心内容,它体现了Java处理进制转换的基本操作。在...

    易语言控制台进制转换

    进制转换是计算机科学中的基础概念,常见的有二进制、八进制、十进制和十六进制。在不同的应用场景中,我们需要将数值从一种进制转换为另一种,例如在处理二进制数据或进行计算时。易语言提供了丰富的内建函数和结构...

    十进制二进制转换器及源码 C语言 VC6

    源码可能包含两个函数:一个用于将十进制转换为二进制字符串,另一个用于将二进制字符串转换回十进制整数。这些函数可以通过用户输入的数字调用,并在控制台输出转换结果。 项目中的"SimpleCalculator_Decimalto...

    进制转换demo

    本文将基于Java语言,深入探讨如何进行十进制、二进制、八进制和十六进制之间的转换,通过一个实际的"进制转换demo"来阐述相关知识。 首先,我们要了解各种进制的基本概念。进制是一种数字表示方式,其中最常见的是...

    易语言嵌入汇编十六进制转长整数源码.7z

    十六进制到长整数的转换可能涉及到位运算、循环以及条件判断等汇编指令,以逐位解析十六进制字符并转换为对应的二进制数值。 十六进制转长整数的过程通常包括以下步骤: 1. 检查输入字符串的格式,确保其只包含有效...

Global site tag (gtag.js) - Google Analytics