当前位置:首页 > 开发 > 编程语言 > 编程 > 正文

字节数组 与 十六进制间的转换

发表于: 2012-10-18   作者:cuisuqiang   来源:转载   浏览次数:
摘要: package com.test; import java.util.Arrays; public class Bytes { private final static byte[] hex = "0123456789ABCDEF".getBytes(); private static int parse(char c) { if (c >= 'a')
package com.test;
import java.util.Arrays;
public class Bytes {
	private final static byte[] hex = "0123456789ABCDEF".getBytes();
	private static int parse(char c) {
		if (c >= 'a')
			return (c - 'a' + 10) & 0x0f;
		if (c >= 'A')
			return (c - 'A' + 10) & 0x0f;
		return (c - '0') & 0x0f;
	}
	// 从字节数组到十六进制字符串转换
	public static String Bytes2HexString(byte[] b) {
		byte[] buff = new byte[2 * b.length];
		for (int i = 0; i < b.length; i++) {
			buff[2 * i] = hex[(b[i] >> 4) & 0x0f];
			buff[2 * i + 1] = hex[b[i] & 0x0f];
		}
		return new String(buff);
	}
	// 从十六进制字符串到字节数组转换
	public static byte[] HexString2Bytes(String hexstr) {
		byte[] b = new byte[hexstr.length() / 2];
		int j = 0;
		for (int i = 0; i < b.length; i++) {
			char c0 = hexstr.charAt(j++);
			char c1 = hexstr.charAt(j++);
			b[i] = (byte) ((parse(c0) << 4) | parse(c1));
		}
		return b;
	}
	public static void main(String[] args) {
		byte[] bt = new byte[]{10, 2, 12, 14, 1, 0, 0, 1, 0, 31, 45, 1, 8, 0, 1, 0, -96, -45, 10, 3};
		System.out.println(Bytes2HexString(bt));
		System.out.println(Arrays.toString(HexString2Bytes("0A020C0E01000001001F2D0108000100A0D30A03")));
	}
}

 

打印结果:

0A020C0E01000001001F2D0108000100A0D30A03
[10, 2, 12, 14, 1, 0, 0, 1, 0, 31, 45, 1, 8, 0, 1, 0, -96, -45, 10, 3]

 

请您到ITEYE看我的原创:http://cuisuqiang.iteye.com

或支持我的个人博客,地址:http://www.javacui.com

 

字节数组 与 十六进制间的转换

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
list,set,map,数组间的相互转换 1.list转set Java代码 Set set = new HashSet(new ArrayList()); 2.
list,set,map,数组间的相互转换 1.list转set Java代码 Set set = new HashSet(new ArrayList()); 2.
本章目标 掌握OutputStreamWriter和InputStreamReader类的作用 OutputStreamWriter和InputStreamRea
2.关于两个byte[]数组的合并: public static byte[] byteMerger(byte[] byte_1, byte[] byte_2) {
字节数组输入流 ByteArrayInputStream 博客分类: java IO 设计模式 ByteArrayInputSteam类从内存中
ByteArrayInputSteam类从内存中的字节数组中读取数据,因此它的数据源是一个字节数组。这个类的构造
原文: 十六进制颜色与Color对象的互相转换[C#] C#十六进制颜色与Color对象的互相转换 把十六进制颜色
OutputStreamWriter和InputStreamReader 一般在操作输入输出内容的就需要使用字节或字符流,但是有
其实这个东西真的没有什么可谈的,完全都是一堆API函数的调用,不过呢,隔那么一段时间就有人在那里
create or replace function njutec_toexgehextointcolor(strcolor in varchar2) return varchar2 i
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号