Java tutorial
//package com.java2s; public class Main { /** * Retrieves the value from the byte array for the tag value specified. The * array should be of the form Tag - Length - Value triplet. * @param tag the tag to retrieve from the byte array * @param triplet the byte sequence containing the tag length value form * @return the value of the specified tag */ public static byte[] getTagValue(byte tag, byte[] triplet) { int index = findTag(tag, triplet); if (index == -1) { return null; } index++; int length = triplet[index] & 0xFF; byte[] result = new byte[length]; index++; System.arraycopy(triplet, index, result, 0, length); return result; } /** * Finds the index that starts the tag value pair in the byte array provide. * @param tag the tag to look for * @param value the byte array to search * @return the starting index of the tag or -1 if the tag could not be found */ public static int findTag(byte tag, byte[] value) { int length = 0; if (value == null) { return -1; } int index = 0; while ((index < value.length) && (value[index] != tag)) { length = value[index + 1] & 0xFF; index += length + 2; } if (index >= value.length) { return -1; } return index; } }