Thursday, October 13, 2011

Program to convert byte array data to hexadecimal

Program to convert byte array data to hexadecimal

public class ByteArrayDemo

{

             protected static final byte[] Hexhars =
            {
                        '0', '1', '2', '3', '4', '5',
                        '6', '7', '8', '9', 'a', 'b',
                        'c', 'd', 'e', 'f'
            };

           
            public String byteArrayToHexString(byte[] b)
            {
//Constructs a string builder with no characters in it and an initial capacity specified by the capacity argument.
                        StringBuilder s = new StringBuilder(2 * b.length);
                     
                        for (int i = 0; i < b.length; i ++)
                        {
                                    int v = b[i] & 0xff;
                                    /*
                                     * ANDs b[i] with 0xFF
 * The value of b[i] is 65(Whose binary is 01000001), we AND it with 0xFF(whose Binary is 11111111)
                                     * resulting in the binary 01000001
                                     */

                                    s.append((char) Hexhars[v >> 4]);
                                    /*
                                     * v >> 4 - Right shifts the value of v(01000001) to 4 places
                                     * On 1st right shift, we get 00100000
                                    * On 2nd right shift, we get 00010000
                                    * On 3rd right shift, we get 00001000
                                    * On 4th right shift, we get 00000100
                                    * Which is 4
* Hexhars[4] - Finds the value at the 4th place(starting from 0) from the byte array Hexhars
                                    */
                                   
s.append((char) Hexhars[v & 0xf]);
                                    /*
                                     * ANDs b[i] with 0xF
* The value of b[i] is 65(Whose binary is 01000001), we AND it with 0xF(whose Binary is 00001111)
                                    * resulting in the binary 00000001 - 1
                                    * Hexhars[1] - Finds the value at the 1st place from the byte array Hexhars
                                    */
}
                        return s.toString();
            }
           
         
            public static void main(String[] args)
            {
                        byte[] byteArray = new byte[] {65};
                        ByteArrayDemo obyteArrayDemo = new ByteArrayDemo();
                        String sData = obyteArrayDemo.byteArrayToHexString(byteArray);                        
                        System.out.println(sData);                          
            }
}

No comments:

Post a Comment

Thanks for visiting my Blog....Ur comments n suggestions are most valuable for me...Thanks