`
MacTavish
  • 浏览: 2082 次
  • 性别: 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();
		}
	}
}

分享到:
评论

相关推荐

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

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

    JAVA 十进制数转二进制数

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

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

    二进制转换为十进制,十进制转换为二进制,控制台应用程序

    c++ 控制台 实现大数运算, 任意位整数运算

    该程序实现了 (1) 实现int单参数构造函数,从int构造,允许隐式转换; (2) 实现const char *单参数构造函数,从十进制数字字符串构造,不允许隐式转换;...(6) 实现十进制、十六进制、二进制输出整数值;

    深入C++实现函数itoa()的分析

    num指定要转换成几进制的数字字符串(二进制,八进制,十进制,十六进制)。如有不足之处,还望指正!!! 代码如下:// TestInheritance.cpp : 定义控制台应用程序的入口点。//#include “stdafx.h”#include ...

    c#上机试题练习及答案

    (2)创建一个控制台应用程序,编写一个函数将十进制数转换成二进制数。程序可以 让用户一直进行转换,直到输入0为止。程序中要对格式转换异常进行处理。 (3)创建一个类,它存储一个int数据成员MyNumber,并给该...

    JAVA上百实例源码以及开源项目

    util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码加以...

    JAVA上百实例源码以及开源项目源代码

    util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码加以...

    命令行方式处理对文件的修改工具

    ⒏输入输出字符串可以是文本的(Ascii),也可以是十六进制值或十进制值; ⒐替换速的特快; ⒑具有备份选项,以防源文件可能损坏; ⒒替换工作可以交互式进行(控制台); ⒓除命令行、控制台它还允许把多条指令...

    Python Cookbook

    1.11 检查一个字符串是文本还是二进制 23 1.12 控制大小写 25 1.13 访问子字符串 26 1.14 改变多行文本字符串的缩进 29 1.15 扩展和压缩制表符 31 1.16 替换字符串中的子串 33 1.17 替换字符串中的子串-Python...

    C语言程序设计标准教程

    6. 把一个文本文件读入内存时,要将ASCII码转换成二进制码, 而把文件以文本方式写入磁盘时,也要把二进制码转换成ASCII码,因此文本文件的读写要花费较多的转换时间。对二进制文件的读写不存在这种转换。 7. 标准...

    C#编程经验技巧宝典

    98 &lt;br&gt;0153 如何自定义数字小数点左边分组位数 98 &lt;br&gt;0154 格式化输入数据为货币格式 99 &lt;br&gt;0155 如何计算两个整数的乘积 99 &lt;br&gt;0156 如何将二进制数转换为十进制数 100 &lt;br&gt;0157 如何...

    C#开发实例大全(基础卷).软件开发技术联盟(带详细书签) PDF 下载

    实例151 如何将B转换成GB、MB和KB 196 实例152 0~N位数的任意组合 197 实例153 在数组中快速查找近似值 199 实例154 猴子选大王算法的实现 200 实例155 使用MD5算法对密码进行加密 201 实例156 凯撒密码算法的实现 ...

    javascript入门笔记

    特点:将 a 和 b 先转换为二进制,按位操作,对应位置上的两个数字,相同时,该位整体结果为0,不同时,该位的整体结果为 1 使用场合:快速交换两个数字 5 ^ 3 101 011 ========== 110 结果为 6 练习: ...

    入门学习Linux常用必会60个命令实例详解doc/txt

    虚拟控制台的切换可以通过按下Alt键和一个功能键来实现,通常使用F1-F6 。 例如,用户登录后,按一下“Alt+ F2”键,用户就可以看到上面出现的“login:”提示符,说明用户看到了第二个虚拟控制台。然后只需按“Alt+...

Global site tag (gtag.js) - Google Analytics