Java Hex Convert To fromHexString(String s, int offset, int length)

Here you can find the source of fromHexString(String s, int offset, int length)

Description

Convert a hexidecimal string generated by toHexString() back into a byte array.

License

Apache License

Parameter

Parameter Description
s String to convert
offset starting character (zero based) to convert.
length number of characters to convert.

Return

the converted byte array. Returns null if the length is not a multiple of 2.

Declaration

public static byte[] fromHexString(String s, int offset, int length) 

Method Source Code

//package com.java2s;
/*//from  w w  w  .j  a  va  2 s  . c  o m
 * Apache Derby is a subproject of the Apache DB project, and is licensed under
 * the Apache License, Version 2.0 (the "License"); you may not use these files
 * 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.
 *
 * Splice Machine, Inc. has modified this file.
 *
 * All Splice Machine modifications are Copyright 2012 - 2016 Splice Machine, Inc.,
 * and are licensed to you under the License; you may not use this file except in
 * compliance with the License.
 *
 * 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.
 *
 */

public class Main {
    /**
     * Convert a hexidecimal string generated by toHexString() back
     * into a byte array.
     *
     * @param s      String to convert
     * @param offset starting character (zero based) to convert.
     * @param length number of characters to convert.
     * @return the converted byte array. Returns null if the length is
     * not a multiple of 2.
     */
    public static byte[] fromHexString(String s, int offset, int length) {
        if ((length % 2) != 0)
            return null;

        byte[] byteArray = new byte[length / 2];

        int j = 0;
        int end = offset + length;
        for (int i = offset; i < end; i += 2) {
            int high_nibble = Character.digit(s.charAt(i), 16);
            int low_nibble = Character.digit(s.charAt(i + 1), 16);

            if (high_nibble == -1 || low_nibble == -1) {
                // illegal format
                return null;
            }

            byteArray[j++] = (byte) (((high_nibble << 4) & 0xf0) | (low_nibble & 0x0f));
        }
        return byteArray;
    }
}

Related

  1. fromHexString(String s)
  2. fromHexString(String s)
  3. fromHexString(String s)
  4. fromHexString(String s)
  5. fromHexString(String s)
  6. fromHexString(String str)
  7. fromHexString(String text)
  8. fromHexString(String value)
  9. fromHexToBytes(String hex)