Here you can find the source of fromHexString(String s, int offset, int length)
Parameter | Description |
---|---|
s | String to convert |
offset | starting character (zero based) to convert. |
length | number of characters to convert. |
public static byte[] fromHexString(String s, int offset, int length)
//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; } }