Java Array Invert invertHostNameFast(byte[] tokens, int offset, int length, byte[] destinationBuffer)

Here you can find the source of invertHostNameFast(byte[] tokens, int offset, int length, byte[] destinationBuffer)

Description

invert Host Name Fast

License

Open Source License

Declaration

public static int invertHostNameFast(byte[] tokens, int offset, int length, byte[] destinationBuffer) 

Method Source Code

//package com.java2s;
/**/*from  w w  w .  j  av a 2 s.  co m*/
 * Copyright 2008 - CommonCrawl Foundation
 * 
 *    This program is free software: you can redistribute it and/or modify
 *    it under the terms of the GNU General Public License as published by
 *    the Free Software Foundation, either version 3 of the License, or
 *    (at your option) any later version.
 *
 *    This program is distributed in the hope that it will be useful,
 *    but WITHOUT ANY WARRANTY; without even the implied warranty of
 *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *    GNU General Public License for more details.
 *
 *    You should have received a copy of the GNU General Public License
 *    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 **/

public class Main {
    public static int invertHostNameFast(byte[] tokens, int offset, int length, byte[] destinationBuffer) {

        int lastScanStart = offset + length - 1;
        int currentIndex = lastScanStart;
        int destinationOffset = 0;

        while (currentIndex >= offset) {
            if (tokens[currentIndex] == '.') {
                if (lastScanStart - currentIndex != 0) {
                    System.arraycopy(tokens, currentIndex + 1, destinationBuffer, destinationOffset,
                            lastScanStart - currentIndex);
                    destinationOffset += (lastScanStart - currentIndex);
                    if (currentIndex != 0) {
                        destinationBuffer[destinationOffset++] = '.';
                    }
                }
                lastScanStart = currentIndex - 1;
            } else if (currentIndex == offset) {
                if (lastScanStart - currentIndex + 1 != 0) {
                    System.arraycopy(tokens, offset, destinationBuffer, destinationOffset,
                            (lastScanStart - currentIndex + 1));
                    destinationOffset += (lastScanStart - currentIndex + 1);
                }
            }
            currentIndex--;
        }

        return destinationOffset;
    }
}

Related

  1. InvertBitsInByte(Boolean[] booleanByte)
  2. invertByteArray(byte[] array)
  3. InvertBytes(Boolean[] dataToInvert)
  4. invertedLength3(float[] a)
  5. inverter(double[] vector)
  6. invertI(long[] v)
  7. invertirTabla2(int[] tabla)
  8. invertList(int[] pos)
  9. invertMap(int[] map)