中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

分享一個 常用的 hex 轉 characters或integer

發布時間:2020-08-06 02:04:29 來源:網絡 閱讀:869 作者:yidinshi 欄目:開發技術

 這個如果不熟的話還是要查找許多資料和時間來解決這個問題的,下面分享這樣一個類。

這樣方便大家節省許多功夫去查找資料。

代碼:

 

  1. package org.apache.commons.codec.binary; 
  2.  
  3. import org.apache.commons.codec.BinaryDecoder; 
  4. import org.apache.commons.codec.BinaryEncoder; 
  5. import org.apache.commons.codec.DecoderException; 
  6. import org.apache.commons.codec.EncoderException; 
  7.  
  8. /** 
  9.  * Hex encoder and decoder. 
  10.  *  
  11.  */ 
  12. public class Hex implements BinaryEncoder, BinaryDecoder { 
  13.  
  14.     /**  
  15.      * Used building output as Hex  
  16.      */ 
  17.     private static final char[] DIGITS = { 
  18.         '0''1''2''3''4''5''6''7'
  19.            '8''9''a''b''c''d''e''f' 
  20.     }; 
  21.  
  22.     /** 
  23.      * Converts an array of characters representing hexidecimal values into an 
  24.      * array of bytes of those same values. The returned array will be half the 
  25.      * length of the passed array, as it takes two characters to represent any 
  26.      * given byte. An exception is thrown if the passed char array has an odd 
  27.      * number of elements. 
  28.      *  
  29.      * @param data An array of characters containing hexidecimal digits 
  30.      * @return A byte array containing binary data decoded from 
  31.      *         the supplied char array. 
  32.      * @throws DecoderException Thrown if an odd number or illegal of characters  
  33.      *         is supplied 
  34.      */ 
  35.     public static byte[] decodeHex(char[] data) throws DecoderException { 
  36.  
  37.         int len = data.length; 
  38.  
  39.         if ((len & 0x01) != 0) { 
  40.             throw new DecoderException("Odd number of characters."); 
  41.         } 
  42.  
  43.         byte[] out = new byte[len >> 1]; 
  44.  
  45.         // two characters form the hex value. 
  46.         for (int i = 0, j = 0; j < len; i++) { 
  47.             int f = toDigit(data[j], j) << 4
  48.             j++; 
  49.             f = f | toDigit(data[j], j); 
  50.             j++; 
  51.             out[i] = (byte) (f & 0xFF); 
  52.         } 
  53.  
  54.         return out; 
  55.     } 
  56.  
  57.     /** 
  58.      * Converts a hexadecimal character to an integer. 
  59.      *   
  60.      * @param ch A character to convert to an integer digit 
  61.      * @param index The index of the character in the source 
  62.      * @return An integer 
  63.      * @throws DecoderException Thrown if ch is an illegal hex character 
  64.      */ 
  65.     protected static int toDigit(char ch, int index) throws DecoderException { 
  66.         int digit = Character.digit(ch, 16); 
  67.         if (digit == -1) { 
  68.             throw new DecoderException("Illegal hexadecimal charcter " + ch + " at index " + index); 
  69.         } 
  70.         return digit; 
  71.     } 
  72.  
  73.     /** 
  74.      * Converts an array of bytes into an array of characters representing the hexidecimal values of each byte in order. 
  75.      * The returned array will be double the length of the passed array, as it takes two characters to represent any 
  76.      * given byte. 
  77.      *  
  78.      * @param data 
  79.      *                  a byte[] to convert to Hex characters 
  80.      * @return A char[] containing hexidecimal characters 
  81.      */ 
  82.     public static char[] encodeHex(byte[] data) { 
  83.  
  84.         int l = data.length; 
  85.  
  86.            char[] out = new char[l << 1]; 
  87.  
  88.            // two characters form the hex value. 
  89.            for (int i = 0, j = 0; i < l; i++) { 
  90.                out[j++] = DIGITS[(0xF0 & data[i]) >>> 4 ]; 
  91.                out[j++] = DIGITS[ 0x0F & data[i] ]; 
  92.            } 
  93.  
  94.            return out; 
  95.     } 
  96.      
  97.     /** 
  98.      * Converts an array of character bytes representing hexidecimal values into an 
  99.      * array of bytes of those same values. The returned array will be half the 
  100.      * length of the passed array, as it takes two characters to represent any 
  101.      * given byte. An exception is thrown if the passed char array has an odd 
  102.      * number of elements. 
  103.      *  
  104.      * @param array An array of character bytes containing hexidecimal digits 
  105.      * @return A byte array containing binary data decoded from 
  106.      *         the supplied byte array (representing characters). 
  107.      * @throws DecoderException Thrown if an odd number of characters is supplied 
  108.      *                   to this function 
  109.      * @see #decodeHex(char[]) 
  110.      */ 
  111.     public byte[] decode(byte[] array) throws DecoderException { 
  112.         return decodeHex(new String(array).toCharArray()); 
  113.     } 
  114.      
  115.     /** 
  116.      * Converts a String or an array of character bytes representing hexidecimal values into an 
  117.      * array of bytes of those same values. The returned array will be half the 
  118.      * length of the passed String or array, as it takes two characters to represent any 
  119.      * given byte. An exception is thrown if the passed char array has an odd 
  120.      * number of elements. 
  121.      *  
  122.      * @param object A String or, an array of character bytes containing hexidecimal digits 
  123.      * @return A byte array containing binary data decoded from 
  124.      *         the supplied byte array (representing characters). 
  125.      * @throws DecoderException Thrown if an odd number of characters is supplied 
  126.      *                   to this function or the object is not a String or char[] 
  127.      * @see #decodeHex(char[]) 
  128.      */ 
  129.     public Object decode(Object object) throws DecoderException { 
  130.         try { 
  131.             char[] charArray = object instanceof String ? ((String) object).toCharArray() : (char[]) object; 
  132.             return decodeHex(charArray); 
  133.         } catch (ClassCastException e) { 
  134.             throw new DecoderException(e.getMessage()); 
  135.         } 
  136.     } 
  137.      
  138.     /** 
  139.      * Converts an array of bytes into an array of bytes for the characters representing the 
  140.      * hexidecimal values of each byte in order. The returned array will be 
  141.      * double the length of the passed array, as it takes two characters to 
  142.      * represent any given byte. 
  143.      * 
  144.      * @param array a byte[] to convert to Hex characters 
  145.      * @return A byte[] containing the bytes of the hexidecimal characters 
  146.      * @see #encodeHex(byte[]) 
  147.      */ 
  148.     public byte[] encode(byte[] array) { 
  149.         return new String(encodeHex(array)).getBytes(); 
  150.     } 
  151.  
  152.     /** 
  153.      * Converts a String or an array of bytes into an array of characters representing the 
  154.      * hexidecimal values of each byte in order. The returned array will be 
  155.      * double the length of the passed String or array, as it takes two characters to 
  156.      * represent any given byte. 
  157.      * 
  158.      * @param object a String, or byte[] to convert to Hex characters 
  159.      * @return A char[] containing hexidecimal characters 
  160.      * @throws EncoderException Thrown if the given object is not a String or byte[] 
  161.      * @see #encodeHex(byte[]) 
  162.      */ 
  163.     public Object encode(Object object) throws EncoderException {     
  164.         try { 
  165.             byte[] byteArray = object instanceof String ? ((String) object).getBytes() : (byte[]) object; 
  166.             return encodeHex(byteArray); 
  167.         } catch (ClassCastException e) { 
  168.             throw new EncoderException(e.getMessage()); 
  169.         } 
  170.     } 
  171.  

更多的移動互聯網的發展趨勢、app開發、移動互聯網應用相關的資料請到互聯網的一點事:www.yidin.net 留言

android QQ群:222392467

資料:

http://www.yidin.net/?p=8280

http://www.yidin.net/?p=9725

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

沂源县| 五华县| 从化市| 柏乡县| 玉龙| 平原县| 灵寿县| 体育| 句容市| 旬邑县| 开原市| 石棉县| 合阳县| 屯门区| 七台河市| 秭归县| 甘泉县| 宁安市| 博白县| 囊谦县| 米林县| 墨玉县| 堆龙德庆县| 南投县| 天全县| 河南省| 吴江市| 牡丹江市| 常州市| 洛扎县| 三门峡市| 江阴市| 新和县| 郧西县| 山东| 卫辉市| 呼和浩特市| 张掖市| 鞍山市| 衡山县| 福泉市|