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

来源:互联网 发布:python运行 编辑:程序博客网 时间:2024/05/22 03:09

http://cuisuqiang.iteye.com/blog/1701085

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

    博客分类:
  • 网络编程
bytebit数据类型操作符java
Java代码 复制代码 收藏代码
  1. package com.test; 
  2. import java.util.Arrays; 
  3. public class Bytes { 
  4.     private finalstatic byte[] hex ="0123456789ABCDEF".getBytes(); 
  5.     private staticint parse(char c) { 
  6.         if (c >= 'a'
  7.             return (c - 'a' +10) & 0x0f
  8.         if (c >= 'A'
  9.             return (c - 'A' +10) & 0x0f
  10.         return (c - '0') &0x0f
  11.     } 
  12.     // 从字节数组到十六进制字符串转换 
  13.     public static String Bytes2HexString(byte[] b) { 
  14.         byte[] buff = newbyte[2 * b.length]; 
  15.         for (int i =0; i < b.length; i++) { 
  16.             buff[2 * i] = hex[(b[i] >>4) & 0x0f]; 
  17.             buff[2 * i + 1] = hex[b[i] &0x0f]; 
  18.         } 
  19.         return new String(buff); 
  20.     } 
  21.     // 从十六进制字符串到字节数组转换 
  22.     public staticbyte[] HexString2Bytes(String hexstr) { 
  23.         byte[] b = newbyte[hexstr.length() / 2]; 
  24.         int j = 0
  25.         for (int i =0; i < b.length; i++) { 
  26.             char c0 = hexstr.charAt(j++); 
  27.             char c1 = hexstr.charAt(j++); 
  28.             b[i] = (byte) ((parse(c0) <<4) | parse(c1)); 
  29.         } 
  30.         return b; 
  31.     } 
  32.     public staticvoid main(String[] args) { 
  33.         byte[] bt = newbyte[]{10,2, 12,14, 1,0, 0,1, 0,31, 45,1, 8,0, 1,0, -96, -45,10, 3}; 
  34.         System.out.println(Bytes2HexString(bt)); 
  35.         System.out.println(Arrays.toString(HexString2Bytes("0A020C0E01000001001F2D0108000100A0D30A03"))); 
  36.     }