Mega Code Archive

 
Categories / Java Tutorial / File
 

Encode a byte array to hex string

/*  * Licensed to the Apache Software Foundation (ASF) under one or more  * contributor license agreements.  See the NOTICE file distributed with  * this work for additional information regarding copyright ownership.  * The ASF licenses this file to You under the Apache License, Version 2.0  * (the "License"); you may not use this file except in compliance with  * the License.  You may obtain a copy of the License at  *   *      http://www.apache.org/licenses/LICENSE-2.0  *   * Unless required by applicable law or agreed to in writing, software  * distributed under the License is distributed on an "AS IS" BASIS,  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  * See the License for the specific language governing permissions and  * limitations under the License.  */ /**  * format validation  *  * This class encodes/decodes hexadecimal data  *   * @xerces.internal    *   * @author Jeffrey Rodriguez  * @version $Id: HexBin.java 446747 2006-09-15 21:46:20Z mrglavas $  */ public final class  HexBin {     static private final int  BASELENGTH   = 128;     static private final int  LOOKUPLENGTH = 16;     static final private byte [] hexNumberTable    = new byte[BASELENGTH];     static final private char [] lookUpHexAlphabet = new char[LOOKUPLENGTH];     static {         for (int i = 0; i < BASELENGTH; i++ ) {             hexNumberTable[i] = -1;         }         for ( int i = '9'; i >= '0'; i--) {             hexNumberTable[i] = (byte) (i-'0');         }         for ( int i = 'F'; i>= 'A'; i--) {             hexNumberTable[i] = (byte) ( i-'A' + 10 );         }         for ( int i = 'f'; i>= 'a'; i--) {            hexNumberTable[i] = (byte) ( i-'a' + 10 );         }         for(int i = 0; i<10; i++ ) {             lookUpHexAlphabet[i] = (char)('0'+i);         }         for(int i = 10; i<=15; i++ ) {             lookUpHexAlphabet[i] = (char)('A'+i -10);         }     }     /**      * Encode a byte array to hex string      *      * @param binaryData array of byte to encode      * @return return encoded string      */     static public String encode(byte[] binaryData) {         if (binaryData == null)             return null;         int lengthData   = binaryData.length;         int lengthEncode = lengthData * 2;         char[] encodedData = new char[lengthEncode];         int temp;         for (int i = 0; i < lengthData; i++) {             temp = binaryData[i];             if (temp < 0)                 temp += 256;             encodedData[i*2] = lookUpHexAlphabet[temp >> 4];             encodedData[i*2+1] = lookUpHexAlphabet[temp & 0xf];         }         return new String(encodedData);     } }