Here you can find the source of indexOf(ByteBuffer buf, byte value)
public static int indexOf(ByteBuffer buf, byte value)
//package com.java2s; /*// ww w. j a v a 2 s . com * Copyright (C) 2008-2010 Wayne Meissner * * This file is part of the JNR project. * * 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. */ import java.nio.ByteBuffer; public class Main { public static int indexOf(ByteBuffer buf, byte value) { if (buf.hasArray()) { byte[] array = buf.array(); int begin = buf.arrayOffset() + buf.position(); int end = buf.arrayOffset() + buf.limit(); for (int offset = 0; offset < end && offset > -1; ++offset) { if (array[begin + offset] == value) { return offset; } } } else { int begin = buf.position(); for (int offset = 0; offset < buf.limit(); ++offset) { if (buf.get(begin + offset) == value) { return offset; } } } return -1; } public static int indexOf(ByteBuffer buf, int offset, byte value) { if (buf.hasArray()) { byte[] array = buf.array(); int begin = buf.arrayOffset() + buf.position() + offset; int end = buf.arrayOffset() + buf.limit(); for (int idx = 0; idx < end && idx > -1; ++idx) { if (array[begin + idx] == value) { return idx; } } } else { int begin = buf.position(); for (int idx = 0; idx < buf.limit(); ++idx) { if (buf.get(begin + idx) == value) { return idx; } } } return -1; } }