uTank-木头
每一个你不满意的现在,都有一个你没有努力的曾经。

 

  1 public class HexUtils {  
  2   
  3     public static void main(String[] args) {
  4         byte []out = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
  5                 (byte)0x10, (byte)0x11, (byte)0x12, (byte)127, (byte)128, (byte)255 };
  6                 
  7 
  8         System.out.println( bytesToHexString((byte)10));          
  9         System.out.println( bytesToHexString(out) );
 10         System.out.println( bytesToHexString(out, 0) );
 11         System.out.println( bytesToHexString(out, 1) );
 12         
 13         byte []b1 = hexStringToBytes("0123456789ABCDEF");
 14         for( int i = 0; i < b1.length; i++ ) {
 15             System.out.println("[" + i + "]:" + b1[i]);
 16         }
 17         System.out.println( bytesToHexString(b1) );
 18         
 19         byte []b2 = bcdStringToBytes("1234567890123456");
 20         for( int i = 0; i < b2.length; i++ ) {
 21             System.out.println("[" + i + "]:" + b2[i]);
 22         }
 23         System.out.println( bytesToHexString(b2) );
 24         
 25         byte []bcdBytes = {0, 1, 2, 3, 4, 5, 6, 7, 9, 111, 
 26                 10, 11, 21, 31, 41, 51, 61, 71, 81, 91, 99};
 27         System.out.println( bcdToHexString(bcdBytes) );
 28     }  
 29   
 30     public static String bytesToHexString(byte src) {  
 31         int v = src & 0xFF;  
 32         String hv = Integer.toHexString(v);  
 33         return hv;  
 34     }  
 35   
 36     public static String bytesToHexString(byte[] src) {  
 37         StringBuilder stringBuilder = new StringBuilder("");  
 38         if (src == null || src.length <= 0) {  
 39             return null;  
 40         }  
 41         for (int i = 0; i < src.length; i++) {  
 42             int v = src[i] & 0xFF;  
 43             String hv = Integer.toHexString(v);  
 44             hv = hv.toUpperCase();  
 45             if (hv.length() < 2) {  
 46                 stringBuilder.append(0);  
 47             }  
 48             stringBuilder.append(hv);
 49         }  
 50         return stringBuilder.toString();  
 51     }  
 52   
 53     public static String bytesToHexString(byte[] src, int mode) {  
 54         StringBuilder stringBuilder = new StringBuilder("");  
 55         if (src == null || src.length <= 0) {  
 56             return null;  
 57         }  
 58         for (int i = 0; i < src.length; i++) {  
 59         
 60             if( i != 0 && i % 16 == 0 ) {
 61                 stringBuilder.append("\r\n");
 62             }
 63         
 64             if( mode == 1 ) {
 65                 stringBuilder.append("0x"); 
 66             }
 67             
 68             int v = src[i] & 0xFF;  
 69             String hv = Integer.toHexString(v);  
 70             if (hv.length() < 2) {  
 71                 stringBuilder.append(0);  
 72             }  
 73             stringBuilder.append(hv);
 74             
 75             if( mode == 1 && i+1 != src.length ) {
 76                 stringBuilder.append(',');
 77             }
 78             stringBuilder.append(" ");
 79         }  
 80         return stringBuilder.toString();  
 81     }
 82   
 83     public static String bcdToHexString(byte[] src) {
 84         StringBuilder stringBuilder = new StringBuilder("");  
 85         if (src == null || src.length <= 0) {  
 86             return null;  
 87         }  
 88         for (int i = 0; i < src.length; i++) {
 89             int v = src[i] & 0xFF;
 90             int v1 = v / 10;
 91             int v2 = v % 10;
 92             
 93             if( v >= 0 && v < 100 ) { 
 94                 stringBuilder.append( v1 );
 95                 stringBuilder.append( v2 );
 96             }
 97         }  
 98         return stringBuilder.toString();      
 99     }  
100 
101     public static byte[] hexStringToBytes(String hexString) {  
102         if (hexString == null || hexString.equals("") || hexString.length() % 2 != 0) {  
103             return null;  
104         }  
105         hexString = hexString.toUpperCase();  
106         int length = hexString.length() / 2;  
107         char[] hexChars = hexString.toCharArray();  
108         byte[] d = new byte[length];  
109         for (int i = 0; i < length; i++) {  
110             int pos = i * 2;  
111             d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1]));  
112         }  
113         return d;  
114     }  
115     
116     public static byte[] bcdStringToBytes(String hexString) {  
117         if (hexString == null || hexString.equals("") || hexString.length() % 2 != 0) {  
118             return null;  
119         }  
120         hexString = hexString.toUpperCase();  
121         int length = hexString.length() / 2;  
122         char[] hexChars = hexString.toCharArray();  
123         byte[] d = new byte[length];  
124         for (int i = 0; i < length; i++) {  
125             int pos = i * 2;  
126             d[i] = (byte) (charToByte(hexChars[pos]) * 10 + charToByte(hexChars[pos + 1]));  
127         }  
128         return d;  
129     } 
130     
131     private static byte charToByte(char c) {  
132         return (byte) "0123456789ABCDEF".indexOf(c);  
133     }  
134 }  

 

posted on 2017-08-02 18:49  uTank  阅读(3898)  评论(0编辑  收藏  举报