Java Hex String Create appendHexString(StringBuilder buffer, byte[] bytes)

Here you can find the source of appendHexString(StringBuilder buffer, byte[] bytes)

Description

Appends a byte array to a StringBuilder with each byte in a "Big Endian" hexidecimal format.

License

Apache License

Parameter

Parameter Description
buffer The StringBuilder the byte array in hexidecimal format will be appended to. If the buffer is null, this method will throw a NullPointerException.
bytes The byte array that will be converted to a hexidecimal String. If the byte array is null, this method will append nothing (a noop)

Declaration

public static void appendHexString(StringBuilder buffer, byte[] bytes) 

Method Source Code

//package com.java2s;
/*/*from w  ww. j ava 2s. com*/
 * #%L
 * mfz-util
 * %%
 * Copyright (C) 2012 mfizz
 * %%
 * Licensed 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.
 * #L%
 */

public class Main {
    public static char[] HEX_TABLE = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E',
            'F' };

    /**
     * Appends a byte array to a StringBuilder with each byte in a "Big Endian"
     * hexidecimal format. For example, a byte 0x34 will be appended as a
     * String in format "34".  A byte array of { 0x34, 035 } would append "3435".
     * @param buffer The StringBuilder the byte array in hexidecimal format
     *      will be appended to.  If the buffer is null, this method will throw
     *      a NullPointerException.
     * @param bytes The byte array that will be converted to a hexidecimal String.
     *      If the byte array is null, this method will append nothing (a noop)
     */
    public static void appendHexString(StringBuilder buffer, byte[] bytes) {
        assertNotNull(buffer);
        if (bytes == null) {
            return; // do nothing (a noop)
        }
        appendHexString(buffer, bytes, 0, bytes.length);
    }

    /**
     * Appends a byte array to a StringBuilder with each byte in a "Big Endian"
     * hexidecimal format. For example, a byte 0x34 will be appended as a
     * String in format "34".  A byte array of { 0x34, 035 } would append "3435".
     * @param buffer The StringBuilder the byte array in hexidecimal format
     *      will be appended to.  If the buffer is null, this method will throw
     *      a NullPointerException.
     * @param bytes The byte array that will be converted to a hexidecimal String.
     *      If the byte array is null, this method will append nothing (a noop)
     * @param offset The offset in the byte array to start from. If the offset
     *      or length combination is invalid, this method will throw an IllegalArgumentException.
     * @param length The length (from the offset) to conver the bytes. If the offset
     *      or length combination is invalid, this method will throw an IllegalArgumentException.
     */
    static public void appendHexString(StringBuilder buffer, byte[] bytes, int offset, int length) {
        assertNotNull(buffer);
        if (bytes == null) {
            return; // do nothing (a noop)
        }
        assertOffsetLengthValid(offset, length, bytes.length);
        int end = offset + length;
        for (int i = offset; i < end; i++) {
            int nibble1 = (bytes[i] & 0xF0) >>> 4;
            int nibble0 = (bytes[i] & 0x0F);
            buffer.append(HEX_TABLE[nibble1]);
            buffer.append(HEX_TABLE[nibble0]);
        }
    }

    /**
     * Appends 2 characters to a StringBuilder with the byte in a "Big Endian"
     * hexidecimal format. For example, a byte 0x34 will be appended as a
     * String in format "34".  A byte of value 0 will be appended as "00".
     * @param buffer The StringBuilder the byte value in hexidecimal format
     *      will be appended to.  If the buffer is null, this method will throw
     *      a NullPointerException.
     * @param value The byte value that will be converted to a hexidecimal String.
     */
    static public void appendHexString(StringBuilder buffer, byte value) {
        assertNotNull(buffer);
        int nibble = (value & 0xF0) >>> 4;
        buffer.append(HEX_TABLE[nibble]);
        nibble = (value & 0x0F);
        buffer.append(HEX_TABLE[nibble]);
    }

    /**
     * Appends 4 characters to a StringBuilder with the short in a "Big Endian"
     * hexidecimal format. For example, a short 0x1234 will be appended as a
     * String in format "1234". A short of value 0 will be appended as "0000".
     * @param buffer The StringBuilder the short value in hexidecimal format
     *      will be appended to.  If the buffer is null, this method will throw
     *      a NullPointerException.
     * @param value The short value that will be converted to a hexidecimal String.
     */
    static public void appendHexString(StringBuilder buffer, short value) {
        assertNotNull(buffer);
        int nibble = (value & 0xF000) >>> 12;
        buffer.append(HEX_TABLE[nibble]);
        nibble = (value & 0x0F00) >>> 8;
        buffer.append(HEX_TABLE[nibble]);
        nibble = (value & 0x00F0) >>> 4;
        buffer.append(HEX_TABLE[nibble]);
        nibble = (value & 0x000F);
        buffer.append(HEX_TABLE[nibble]);
    }

    /**
     * Appends 8 characters to a StringBuilder with the int in a "Big Endian"
     * hexidecimal format. For example, a int 0xFFAA1234 will be appended as a
     * String in format "FFAA1234". A int of value 0 will be appended as "00000000".
     * @param buffer The StringBuilder the int value in hexidecimal format
     *      will be appended to.  If the buffer is null, this method will throw
     *      a NullPointerException.
     * @param value The int value that will be converted to a hexidecimal String.
     */
    static public void appendHexString(StringBuilder buffer, int value) {
        assertNotNull(buffer);
        int nibble = (value & 0xF0000000) >>> 28;
        buffer.append(HEX_TABLE[nibble]);
        nibble = (value & 0x0F000000) >>> 24;
        buffer.append(HEX_TABLE[nibble]);
        nibble = (value & 0x00F00000) >>> 20;
        buffer.append(HEX_TABLE[nibble]);
        nibble = (value & 0x000F0000) >>> 16;
        buffer.append(HEX_TABLE[nibble]);
        nibble = (value & 0x0000F000) >>> 12;
        buffer.append(HEX_TABLE[nibble]);
        nibble = (value & 0x00000F00) >>> 8;
        buffer.append(HEX_TABLE[nibble]);
        nibble = (value & 0x000000F0) >>> 4;
        buffer.append(HEX_TABLE[nibble]);
        nibble = (value & 0x0000000F);
        buffer.append(HEX_TABLE[nibble]);
    }

    /**
     * Appends 16 characters to a StringBuilder with the long in a "Big Endian"
     * hexidecimal format. For example, a long 0xAABBCCDDEE123456 will be appended as a
     * String in format "AABBCCDDEE123456". A long of value 0 will be appended as "0000000000000000".
     * @param buffer The StringBuilder the long value in hexidecimal format
     *      will be appended to.  If the buffer is null, this method will throw
     *      a NullPointerException.
     * @param value The long value that will be converted to a hexidecimal String.
     */
    static public void appendHexString(StringBuilder buffer, long value) {
        appendHexString(buffer, (int) ((value & 0xFFFFFFFF00000000L) >>> 32));
        appendHexString(buffer, (int) (value & 0x00000000FFFFFFFFL));
    }

    static private void assertNotNull(StringBuilder buffer) {
        if (buffer == null) {
            throw new NullPointerException("The buffer cannot be null");
        }
    }

    static private void assertOffsetLengthValid(int offset, int length, int arrayLength) {
        if (offset < 0) {
            throw new IllegalArgumentException("The array offset was negative");
        }
        if (length < 0) {
            throw new IllegalArgumentException("The array length was negative");
        }
        if (offset + length > arrayLength) {
            throw new ArrayIndexOutOfBoundsException("The array offset+length would access past end of array");
        }
    }
}

Related

  1. appendHexJavaScriptRepresentation(StringBuilder sb, char c)
  2. appendHexNumber(StringBuffer target, byte b)
  3. appendHexPair(byte b, StringBuffer sb)
  4. appendHexStream(StringBuilder sb, byte[] bytes, String delimiter, boolean prefixEachValue, boolean upperCase)
  5. appendHexString(StringBuffer buffer, byte data)
  6. appendHexString(StringBuilder builder, int value)
  7. appendHexValue(final StringBuffer sb, final byte data)
  8. appendHexValue(StringBuffer buffer, byte b)