com.google.common.primitives.Bytes#indexOf ( )源码实例Demo

下面列出了com.google.common.primitives.Bytes#indexOf ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: zetasketch   文件: StateTest.java
/** Verify that the data is aliased when possible. */
@Test
@SuppressWarnings("boxing")
public void parseSparseData_AliasesArray() throws IOException {
  byte[] bytes = build(HyperLogLogPlusUniqueStateProto.newBuilder()
      .setSparseData(ByteString.copyFrom(new byte[] {1, 2, 3})));
  CodedInputStream stream = CodedInputStream.newInstance(bytes);
  stream.enableAliasing(true);
  State state = new State();
  state.parse(stream);

  // Preconditions.
  int idx = Bytes.indexOf(bytes, new byte[] {1, 2, 3});
  assertThat(idx).isAtLeast(0);
  assertThat(state.sparseData.toByteArray()).isEqualTo(new byte[] {1, 2, 3});

  // Modify the bytes, make sure that it is reflected in builder.
  bytes[idx + 1] = 4;
  assertThat(state.sparseData.toByteArray()).isEqualTo(new byte[] {1, 4, 3});
}
 
源代码2 项目: geowave   文件: DataStatisticsStoreImpl.java
public static InternalDataStatistics<?, ?, ?> setFields(
    final GeoWaveMetadata entry,
    final InternalDataStatistics<?, ?, ?> basicStats,
    final short adapterId) {
  if (basicStats != null) {
    basicStats.setAdapterId(adapterId);
    final int index = Bytes.indexOf(entry.getPrimaryId(), (byte) 0);
    if ((index > 0) && (index < (entry.getPrimaryId().length - 1))) {
      basicStats.setType(
          new BaseStatisticsType(Arrays.copyOfRange(entry.getPrimaryId(), 0, index)));

      basicStats.setExtendedId(
          StringUtils.stringFromBinary(
              Arrays.copyOfRange(entry.getPrimaryId(), index + 1, entry.getPrimaryId().length)));
    } else {
      basicStats.setType(new BaseStatisticsType(entry.getPrimaryId()));
    }
    final byte[] visibility = entry.getVisibility();
    if (visibility != null) {
      basicStats.setVisibility(visibility);
    }
  }
  return basicStats;
}
 
源代码3 项目: hadoop   文件: UpgradeUtilities.java
/**
 * Corrupt the specified file.  Some random bytes within the file
 * will be changed to some random values.
 *
 * @throws IllegalArgumentException if the given file is not a file
 * @throws IOException if an IOException occurs while reading or writing the file
 */
public static void corruptFile(File file,
    byte[] stringToCorrupt,
    byte[] replacement) throws IOException {
  Preconditions.checkArgument(replacement.length == stringToCorrupt.length);
  if (!file.isFile()) {
    throw new IllegalArgumentException(
        "Given argument is not a file:" + file);
  }
  byte[] data = Files.toByteArray(file);
  int index = Bytes.indexOf(data, stringToCorrupt);
  if (index == -1) {
    throw new IOException(
        "File " + file + " does not contain string " +
        new String(stringToCorrupt));
  }

  for (int i = 0; i < stringToCorrupt.length; i++) {
    data[index + i] = replacement[i];
  }
  Files.write(data, file);
}
 
源代码4 项目: big-c   文件: UpgradeUtilities.java
/**
 * Corrupt the specified file.  Some random bytes within the file
 * will be changed to some random values.
 *
 * @throws IllegalArgumentException if the given file is not a file
 * @throws IOException if an IOException occurs while reading or writing the file
 */
public static void corruptFile(File file,
    byte[] stringToCorrupt,
    byte[] replacement) throws IOException {
  Preconditions.checkArgument(replacement.length == stringToCorrupt.length);
  if (!file.isFile()) {
    throw new IllegalArgumentException(
        "Given argument is not a file:" + file);
  }
  byte[] data = Files.toByteArray(file);
  int index = Bytes.indexOf(data, stringToCorrupt);
  if (index == -1) {
    throw new IOException(
        "File " + file + " does not contain string " +
        new String(stringToCorrupt));
  }

  for (int i = 0; i < stringToCorrupt.length; i++) {
    data[index + i] = replacement[i];
  }
  Files.write(data, file);
}
 
源代码5 项目: news-crawl   文件: ContentDetector.java
public int getFirstMatch(byte[] content) {
    byte[] beginning = content;
    if (content.length > maxOffset) {
        beginning = Arrays.copyOfRange(content, 0, maxOffset);
    }
    OR:
    for (int i = 0; i < clues.length; i++) {
        byte[][] group = clues[i];
        for (byte[] clue : group) {
            if (Bytes.indexOf(beginning, clue) == -1)
                continue OR;
        }
        // success, all members of one group matched
        return i;
    }
    return -1;
}
 
源代码6 项目: dhcp4j   文件: NulTerminatedStringOption.java
@Override
protected byte[] getStringData() {
    byte[] data = super.getStringData();
    int length = Bytes.indexOf(data, (byte) 0);
    if (length >= 0)
        return Arrays.copyOf(data, length);
    return data;
}
 
源代码7 项目: NetBare   文件: Http2SniffInterceptor.java
@Override
protected void intercept(@NonNull HttpRequestChain chain, @NonNull ByteBuffer buffer,
                         int index) throws IOException {
    if (index == 0) {
        HttpRequest request = chain.request();
        if (mLog == null) {
            mLog = new NetBareXLog(request.protocol(), request.ip(), request.port());
        }
        // HTTP2 is forces to use SSL connection.
        if (request.isHttps()) {
            if (buffer.hasRemaining() && Bytes.indexOf(buffer.array(),
                    Http2.CONNECTION_PREFACE) == buffer.position()) {
                mLog.i("Send a connection preface to remote server.");
                request.session().protocol = HttpProtocol.HTTP_2;
                if (buffer.remaining() == Http2.CONNECTION_PREFACE.length) {
                    // Skip preface frame data.
                    mCallback.onRequest(request, buffer);
                    return;
                } else {
                    ByteBuffer prefaceBuffer = ByteBuffer.allocate(Http2.CONNECTION_PREFACE.length);
                    prefaceBuffer.put(Http2.CONNECTION_PREFACE);
                    prefaceBuffer.flip();
                    mCallback.onRequest(request, prefaceBuffer);
                    // The remaining data continues.
                    buffer.position(buffer.position() + Http2.CONNECTION_PREFACE.length);
                }
            }
        }
    }
    if (buffer.hasRemaining()) {
        chain.process(buffer);
    }
}
 
源代码8 项目: dhcp4j   文件: DhcpMessageDecoder.java
@Nonnull
private static String decodeString(@Nonnull ByteBuffer buffer, @Nonnegative int len)
        throws IOException {
    byte[] bytes = decodeBytes(buffer, len);
    // find zero-terminator
    int slen = Bytes.indexOf(bytes, (byte) 0);
    if (slen < 0)
        slen = bytes.length;
    return new String(bytes, 0, slen, Charsets.ISO_8859_1);
}
 
源代码9 项目: wechatbot-xposed   文件: Protocl.java
public static byte[] Unpack(byte[] buffer,readerData reader){
    ByteBuffer buf = ByteBuffer.allocate(102400);
    long length = buffer.length;
    int biao = 0;
    if (length <= ConstHeaderLength+ConstSaveDataLength+ConstFooterLength) {
        return buffer;
    }
    if (Bytes.indexOf(buffer, ConstHeader.getBytes()) == -1 || Bytes.indexOf(buffer, ConstFooter.getBytes()) == -1){
        return buffer;
    }
    int start = Bytes.indexOf(buffer, ConstHeader.getBytes());
    if (start == -1) {
        return buffer;
    }
    int end =  Bytes.indexOf(Arrays.copyOfRange(buffer,start+ConstHeaderLength,buffer.length), ConstFooter.getBytes());
    if (end == -1) {
        return buffer;
    }
    end += start + ConstHeaderLength;
    biao = start + ConstHeaderLength;
    int messageLength = (int)bytes2int(Arrays.copyOfRange(buffer,biao,biao+ConstSaveDataLength));
    if (end-start-ConstHeaderLength-ConstSaveDataLength != messageLength) {
        return Arrays.copyOfRange(buffer,end+ConstFooterLength,buffer.length);
    }
    biao += ConstSaveDataLength;

    reader.setReader(Arrays.copyOfRange(buffer,biao,biao+messageLength));
    biao += messageLength + ConstFooterLength;
    if (biao == length) {
        return new byte[]{};
    }

    return Arrays.copyOfRange(buffer,biao,buffer.length);
}
 
源代码10 项目: dhcp4j   文件: NulTerminatedStringOption.java
@Override
protected byte[] getStringData() {
    byte[] data = super.getStringData();
    int length = Bytes.indexOf(data, (byte) 0);
    if (length >= 0)
        return Arrays.copyOf(data, length);
    return data;
}
 
源代码11 项目: raml-module-builder   文件: FileUploadsUtil.java
private static MimeMultipart split(byte[] pattern, byte[] input, int sizeLimit) {

    MimeMultipart mmp = new MimeMultipart();
    int start = 0;
    int pos   = Bytes.indexOf(input, pattern);
    int size  = input.length;
    int entryCount = 0;
    ByteBuffer buffer = ByteBuffer.wrap(input);

    while(pos != -1 && start < size){

      int end = pos + pattern.length;
      if(entryCount != 0){
        //dont add the boundary itself - which is what you have in the first iteration
        buffer.position(start);

        //not a copy but points to the buffer
        //used for the indexOf functionality to keep checking
        //further on in the buffer - current pos -> end of buffer
        byte[] tmpBuffer = buffer.slice().array();

        //set limit - now that limit is set re-slice to only get the needed
        //area -
        buffer.limit(end);

        try {
          MimeBodyPart mbp = new MimeBodyPart(new InternetHeaders(), buffer.slice().array());
          mmp.addBodyPart(mbp);
        } catch (MessagingException e) {
          log.error(e.getMessage(), e);
        }
        pos = Bytes.indexOf(tmpBuffer, pattern);
      }
      entryCount++;
      start = end;
    }
    return mmp;
  }
 
源代码12 项目: rya   文件: CustomDatatypeResolver.java
@Override
public RyaType deserialize(final byte[] bytes) throws RyaTypeResolverException {
    if (!deserializable(bytes)) {
        throw new RyaTypeResolverException("Bytes not deserializable");
    }
    final RyaType rt = newInstance();
    final int length = bytes.length;
    final int indexOfType = Bytes.indexOf(bytes, TYPE_DELIM_BYTE);
    if (indexOfType < 1) {
        throw new RyaTypeResolverException("Not a datatype literal");
    }
    String data = deserializeData(new String(bytes, 0, indexOfType, StandardCharsets.UTF_8));
    rt.setDataType(SimpleValueFactory.getInstance().createIRI(new String(bytes, indexOfType + 1, (length - indexOfType) - 3, StandardCharsets.UTF_8)));
    if (RDF.LANGSTRING.equals(rt.getDataType())) {
        final int langDelimiterPos = data.lastIndexOf(LiteralLanguageUtils.LANGUAGE_DELIMITER);
        final String parsedData = data.substring(0, langDelimiterPos);
        final String language = data.substring(langDelimiterPos + 1, data.length());
        if (language != null && Literals.isValidLanguageTag(language)) {
            rt.setLanguage(language);
        } else {
            rt.setLanguage(LiteralLanguageUtils.UNDETERMINED_LANGUAGE);
        }
        data = parsedData;
    }
    rt.setData(data);
    return rt;
}
 
源代码13 项目: NetBare   文件: HttpHeaderSeparateInterceptor.java
@Override
protected void intercept(@NonNull HttpRequestChain chain, @NonNull ByteBuffer buffer, int index)
        throws IOException {
    if (mLog == null) {
        mLog = new NetBareXLog(Protocol.TCP, chain.request().ip(), chain.request().port());
    }
    if (mRequestHeaderHandled) {
        chain.process(buffer);
        return;
    }
    if (!buffer.hasRemaining()) {
        chain.process(buffer);
        return;
    }
    buffer = mergeRequestBuffer(buffer);
    // Check the part end line.
    int headerEndIndex = Bytes.indexOf(buffer.array(), NetBareUtils.PART_END_BYTES);
    if (headerEndIndex < 0) {
        mLog.w("Http request header data is not enough.");
        // Not found the part end line, maybe the data is not enough, wait next buffer coming.
        pendRequestBuffer(buffer);
    } else {
        mRequestHeaderHandled = true;
        // Check whether the header and the body are in the same buffer.
        boolean hasMultiPart = headerEndIndex < buffer.limit() - NetBareUtils.PART_END_BYTES.length;
        if (hasMultiPart) {
            mLog.w("Multiple http request parts are founded.");
            // Separate the header and body data to two buffers.
            int offset = headerEndIndex + NetBareUtils.PART_END_BYTES.length;
            ByteBuffer headerBuffer = ByteBuffer.wrap(buffer.array(), buffer.position(), offset);
            // Allocate a new buffer, do not use wrap, different buffers will share the same array.
            ByteBuffer bodyBuffer = ByteBuffer.allocate(buffer.limit() - offset);
            bodyBuffer.put(buffer.array(), offset, buffer.limit() - offset);
            bodyBuffer.flip();
            chain.process(headerBuffer);
            chain.process(bodyBuffer);
        } else {
            chain.process(buffer);
        }
    }
}
 
源代码14 项目: phoenix   文件: PhoenixResultSet.java
/**
 * Separate the actual cell data from the serialized list of dynamic column PColumns and
 * return the deserialized list of dynamic column PColumns for the current row
 * @return Deserialized list of dynamic column PColumns or null if there are no dynamic columns
 */
private List<PColumn> getDynColsListAndSeparateFromActualData() {
    Cell base = this.currentRow.getValue(0);
    final byte[] valueArray = CellUtil.cloneValue(base);
    // We inserted the known byte array before appending the serialized list of dynamic columns
    final byte[] anchor = Arrays.copyOf(DYN_COLS_METADATA_CELL_QUALIFIER,
            DYN_COLS_METADATA_CELL_QUALIFIER.length);
    // Reverse the arrays to find the last occurrence of the sub-array in the value array
    ArrayUtils.reverse(valueArray);
    ArrayUtils.reverse(anchor);
    final int pos = valueArray.length - Bytes.indexOf(valueArray, anchor);
    // There are no dynamic columns to process so return immediately
    if (pos >= valueArray.length) {
        return null;
    }
    ArrayUtils.reverse(valueArray);

    // Separate the serialized list of dynamic column PColumns from the actual cell data
    byte[] actualCellDataBytes = Arrays.copyOfRange(valueArray, 0,
            pos - DYN_COLS_METADATA_CELL_QUALIFIER.length);
    ImmutableBytesWritable actualCellData = new ImmutableBytesWritable(actualCellDataBytes);
    ImmutableBytesWritable key = new ImmutableBytesWritable();
    currentRow.getKey(key);
    // Store only the actual cell data as part of the current row
    this.currentRow = new TupleProjector.ProjectedValueTuple(key.get(), key.getOffset(),
            key.getLength(), base.getTimestamp(),
            actualCellData.get(), actualCellData.getOffset(), actualCellData.getLength(), 0);

    byte[] dynColsListBytes = Arrays.copyOfRange(valueArray, pos, valueArray.length);
    List<PColumn> dynCols = new ArrayList<>();
    try {
        List<PTableProtos.PColumn> dynColsProtos = DynamicColumnMetaDataProtos
                .DynamicColumnMetaData.parseFrom(dynColsListBytes).getDynamicColumnsList();
        for (PTableProtos.PColumn colProto : dynColsProtos) {
            dynCols.add(PColumnImpl.createFromProto(colProto));
        }
    } catch (InvalidProtocolBufferException e) {
        return null;
    }
    return dynCols;
}
 
源代码15 项目: carbon-apimgt   文件: WSDL20ProcessorImpl.java
@Override
public boolean canProcess(byte[] content) {
    return Bytes.indexOf(content, WSDL20_NAMESPACE.getBytes()) > 0;
}
 
源代码16 项目: carbon-apimgt   文件: WSDL11ProcessorImpl.java
public boolean canProcess(byte[] content) {
    return Bytes.indexOf(content, WSDL11_NAMESPACE.getBytes()) > 0;
}
 
源代码17 项目: phoenix-tephra   文件: CommitMarkerCodec.java
private boolean isMarkerValid() {
  // rawKey should have the expected length and the matching bytes should start at index 0
  return rawKey.getLength() == KEY_BYTES.length && Bytes.indexOf(rawKey.getData(), KEY_BYTES) == 0;
}
 
源代码18 项目: android-arscblamer   文件: ResourceConfiguration.java
private String byteArrayToString(byte[] data) {
  int length = Bytes.indexOf(data, (byte) 0);
  return new String(data, 0, length >= 0 ? length : data.length, Charsets.US_ASCII);
}
 
源代码19 项目: JavaSerialKiller   文件: Utilities.java
public static byte[] serializeRequest(
        byte[] message, byte[] selectedMessage, boolean isEncoded, boolean isCompressed, String command,
        IExtensionHelpers helpers, String payloadType
) {

    int selectedOffset = 0;
    int endingOffset = 0;

    if (selectedMessage != null) {
        selectedOffset = Bytes.indexOf(message, selectedMessage);
        endingOffset = selectedOffset + selectedMessage.length;

    } else if (ChildTab.selectedMessage != null) {
        byte[] payload = ChildTab.selectedMessage;
        if (ChildTab.isCompressed) {
            payload = gzipByteArray(payload);
        }
        if (ChildTab.isEncoded) {
            payload = Base64.getEncoder().encode(payload);
        }

        selectedOffset = Bytes.indexOf(message, payload);
        endingOffset = selectedOffset + payload.length;
    }

    if (ChildTab.selectedMessage != null || selectedMessage != null) {

        byte[] beginningArray = Arrays.copyOfRange(message, 0, selectedOffset);
        byte[] endingArray = Arrays.copyOfRange(message, endingOffset, message.length);

        byte[] exploitArray = getExploitPayload(payloadType, command);

        ChildTab.selectedMessage = exploitArray;


        if (isCompressed) {
            exploitArray = gzipByteArray(exploitArray);
            ChildTab.isCompressed = true;
        } else {
            ChildTab.isCompressed = false;
        }

        byte[] output;

        if (isEncoded) {
            ChildTab.isEncoded = true;
            byte[] base64EncodedExploit = Base64.getEncoder().encode(exploitArray);

            output = Bytes.concat(beginningArray, base64EncodedExploit, endingArray);
        } else {
            ChildTab.isEncoded = false;
            output = Bytes.concat(beginningArray, exploitArray, endingArray);
        }

        IRequestInfo iRequestInfo = helpers.analyzeRequest(output);

        int bodyOffset = iRequestInfo.getBodyOffset();

        java.util.List<String> headers = iRequestInfo.getHeaders();

        byte[] newBody = new byte[output.length - bodyOffset];

        System.arraycopy(output, bodyOffset, newBody, 0, output.length - bodyOffset);

        return helpers.buildHttpMessage(headers, newBody);
    } else {
        return message;
    }
}
 
源代码20 项目: raml-module-builder   文件: FileUploadsUtil.java
public static MimeMultipart MultiPartFormData(Buffer buffer, int sizeLimit, String encoding) throws IOException {

    int contentLength = buffer.length();
    ArrayList<Byte> vBytes = new ArrayList<>();
    byte[] b = new byte[1];
    int paramCount = 0;

    // if the file they are trying to upload is too big, throw an exception
    if(contentLength > sizeLimit) {
      throw new IOException("File has exceeded size limit.");
    }

    byte[] bytes = buffer.getBytes();

    byte[] separator = "\n".getBytes(Charset.forName(encoding));

    int endBoundaryPos = Bytes.indexOf(bytes, separator);

    //only copy the boundary (the first line) - not copying all content
    byte[] boundary = Arrays.copyOfRange(bytes, 0, endBoundaryPos + separator.length);

    return split(boundary, bytes, sizeLimit);

  }