16进制转换字节数组工具类

public class StringUtil {
	public static String str = "696d706f7274";

	public static void main(String[] args) {
		System.out.println(new String(getBytes(str)));
	}

	public static boolean isOdd(String str) {
		int length = str.length();
		int isOdd = length % 2;
		if (isOdd == 0)
			return false;
		else
			return true;
	}

	public static byte[] getBytes(String str) {
		boolean isOdd = isOdd(str);
		int size = str.length();
		if (isOdd) {
			byte[] byteOdd = new byte[size / 2 + 1];
			for (int j = 0, i = 0; i < str.length() - 1; i++) {
				if (i % 2 == 0) {
					byte a = getByteFromChar(str.charAt(i));
					byte b = getByteFromChar(str.charAt(++i));
					byteOdd[j++] = (byte) (a * 16 + b);
				}

			}
			byteOdd[size / 2] = (byte) str.charAt(str.length() - 1);
			return byteOdd;
		} else {
			byte[] byteEven = new byte[size / 2];
			for (int j = 0, i = 0; i < str.length(); i++) {
				if (i % 2 == 0) {
					byte a = getByteFromChar(str.charAt(i));
					byte b = getByteFromChar(str.charAt(++i));
					byteEven[j++] = (byte) (a * 16 + b);
				}

			}
			return byteEven;
		}

	}

	public static byte getByteFromChar(char c) {
		if (c == ‘0‘) {
			return 0;
		} else if (c == ‘1‘) {
			return 1;
		} else if (c == ‘2‘) {
			return 2;
		} else if (c == ‘3‘) {
			return 3;
		} else if (c == ‘4‘) {
			return 4;
		} else if (c == ‘5‘) {
			return 5;
		} else if (c == ‘6‘) {
			return 6;
		} else if (c == ‘7‘) {
			return 7;
		} else if (c == ‘8‘) {
			return 8;
		} else if (c == ‘9‘) {
			return 9;
		} else if (c == ‘a‘) {
			return 10;
		} else if (c == ‘b‘) {
			return 11;
		} else if (c == ‘c‘) {
			return 12;
		} else if (c == ‘d‘) {
			return 13;
		} else if (c == ‘e‘) {
			return 14;
		} else if (c == ‘f‘) {
			return 15;
		}
		return -1;
	}

}
时间: 2024-11-03 17:11:13

16进制转换字节数组工具类的相关文章

java byte 16进制转换

整型转16进制: int devIdInt = Integer.parseInt(devId); String devIdString = Integer.toHexString(devIdInt); 16进制转为字节: byte devBin = (byte) Integer.parseInt(devIdString, 16); byte devBin =Integer.valueOf(devIdString, 16).byteValue(); byte devBin =Byte.parseB

jstack:将Process Explorer中看到的进程ID做16进制转换,到ThreadDump中加上0x 前缀即能找到对应线程(转)

原文链接:http://www.iteye.com/topic/1133941 症状: 使用Eclipse win 64位版本,indigo及kepler都重现了,使用tomcat 6.0.39,jdk1.6.u45及1.7u45均尝试了,也重现. 重现步骤很简单,使用debug模式启动时较容易出来,debug启动tomcat,(我的是webapp)然后在页面上随便点点即发现eclipse僵死,且任何从浏览器发出的请求都卡住不能被接收执行. 1.然后从任务管理器直接杀掉eclipse对应的jav

从16进制转换成汉字

/// <summary> /// 从16进制转换成汉字 /// </summary> /// <param name="hex"></param> /// <returns></returns> public static string GetChsFromHex(string hex) { if (hex == null) throw new ArgumentNullException("hex&qu

蓝桥杯 16进制转换8进制

蓝桥杯 16进制转换8进制 我表示我自己太渣渣了,总是超时,通不过测试. 题目 问题描述 给定n个十六进制正整数,输出它们对应的八进制数.输入格式 输入的第一行为一个正整数n (1<=n<=10). 接下来n行,每行一个由0~9.大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000.输出格式 输出n行,每行为输入对应的八进制正整数.注意 输入的十六进制数不会有前导0,比如012A. 输出的八进制数也不能有前导0.样例输入239123ABC样例输出7144

java 16进制转换10进制

public static String toHexString2(byte[] b) { StringBuffer buffer = new StringBuffer(); for (int i = 0; i < b.length; ++i) { buffer.append(toHexString2(b[i])); } return buffer.toString(); } public static String toHexString2(byte b) { char[] buffer =

Java 10进制转2、8、16进制转换 / 2、8、16进制转10进制转换

public static void main(String[] args) { int i = 10; System.out.println("***********10进制转换2进制.8进制.16进制************"); System.out.println(Integer.toBinaryString(i)); // 10转换2进制 System.out.println(Integer.toOctalString(i)); // 10转换8进制 System.out.p

Javascript颜色rgb与16进制转换代码

Javascript实现颜色rgb与16进制转换的方法.分享给大家供大家参考.具体如下: Color(12,34,56); Color("#fff") Color("#defdcd") //颜色转换 var Color = function() {   if (!(this instanceof Color)) {    var color = new Color();    color._init.apply(color, arguments);    retur

C#串口通讯中常用的16进制的字节转换

1.对于通讯协议的十六进制数值进行简单转换 //二进制转十进制Console.WriteLine("二进制 111101 的十进制表示: "+Convert.ToInt32("111101", 2));//八进制转十进制Console.WriteLine("八进制 44 的十进制表示: "+Convert.ToInt32("44", 8));//十六进制转十进制Console.WriteLine("十六进制 CC的十

C# 校验并转换 16 进制字符串到字节数组

问题 最近在进行硬件上位机开发的时候,经常会遇到将 16 进制字符串转换为 byte[] 的情况,除了这种需求以外,还需要判定一个字符串是否是有效的 16 进制数据. 解决 字符串转 byte[] 的情况可以使用 Convert.ToByte(string) 来解决,16 进制数据的判定则可以结合正则和长度来进行处理. 在这里我是只接受以下两种形式的 16 进制字符串,并对其进行验证和转换. AA 12 34 56 78 06 AA-12-34-56-78-06 下面就是代码: public s