Hex.java
上传用户:lior1029
上传日期:2013-05-07
资源大小:209k
文件大小:2k
源码类别:

CA认证

开发平台:

Java

  1. package org.bouncycastle.util.encoders;
  2. /**
  3.  * Converters for going from hex to binary and back.
  4.  * <p>
  5.  * Note: this class assumes ASCII processing.
  6.  */
  7. public class Hex
  8. {
  9.     private static HexTranslator   encoder = new HexTranslator();
  10.     private static final byte[]   hexTable = 
  11.         { 
  12.             (byte)'0', (byte)'1', (byte)'2', (byte)'3', (byte)'4', (byte)'5', (byte)'6', (byte)'7',
  13.             (byte)'8', (byte)'9', (byte)'a', (byte)'b', (byte)'c', (byte)'d', (byte)'e', (byte)'f'
  14.         };
  15.     public static byte[] encode(
  16.         byte[]  array)
  17.     {
  18.         return encode(array, 0, array.length);
  19.     }
  20.     public static byte[] encode(
  21.         byte[]  array,
  22.         int     off,
  23.         int     length)
  24.     {
  25.         byte[]      enc = new byte[length * 2];
  26.         encoder.encode(array, off, length, enc, 0);
  27.         return enc;
  28.     }
  29.     public static byte[] decode(
  30.         String  string)
  31.     {
  32.         byte[]          bytes = new byte[string.length() / 2];
  33.         String          buf = string.toLowerCase();
  34.         for (int i = 0; i < buf.length(); i += 2)
  35.         {
  36. char    left  = buf.charAt(i);
  37. char    right = buf.charAt(i+1);
  38.             int     index = i / 2;
  39.             if (left < 'a')
  40.             {
  41.                 bytes[index] = (byte)((left - '0') << 4);
  42.             }
  43.             else
  44.             {
  45.                 bytes[index] = (byte)((left - 'a' + 10) << 4);
  46.             }
  47.             if (right < 'a')
  48.             {
  49.                 bytes[index] += (byte)(right - '0');
  50.             }
  51.             else
  52.             {
  53.                 bytes[index] += (byte)(right - 'a' + 10);
  54.             }
  55.         }
  56.         return bytes;
  57.     }
  58.     public static byte[] decode(
  59.         byte[]  array)
  60.     {
  61.         byte[]          bytes = new byte[array.length / 2];
  62.         encoder.decode(array, 0, array.length, bytes, 0);
  63.         return bytes;
  64.     }
  65. }