Java Array Copy arrayCopy(byte[] src, int srcStart, byte[] dest, int destStart, int destBitOffset, int lengthInBits)

Here you can find the source of arrayCopy(byte[] src, int srcStart, byte[] dest, int destStart, int destBitOffset, int lengthInBits)

Description

array Copy

License

LGPL

Parameter

Parameter Description
src a parameter
srcStart a parameter
dest a parameter
destStart a parameter
destBitOffset a parameter
lengthInBits In bits

Declaration

public static void arrayCopy(byte[] src, int srcStart, byte[] dest,
        int destStart, int destBitOffset, int lengthInBits) 

Method Source Code

//package com.java2s;
/* ***** BEGIN LICENSE BLOCK *****
 * Version: MPL 1.1/GPL 2.0/LGPL 2.1/*from   w w  w.j a v  a  2  s .c o m*/
 *
 * The contents of this file are subject to the Mozilla Public License Version
 * 1.1 (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.mozilla.org/MPL/
 *
 * Software distributed under the License is distributed on an "AS IS" basis,
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
 * for the specific language governing rights and limitations under the
 * License.
 *
 * The Original Code is "SMS Library for the Java platform".
 *
 * The Initial Developer of the Original Code is Markus Eriksson.
 * Portions created by the Initial Developer are Copyright (C) 2002
 * the Initial Developer. All Rights Reserved.
 *
 * Contributor(s):
 *   Boris von Loesch
 *
 * Alternatively, the contents of this file may be used under the terms of
 * either the GNU General Public License Version 2 or later (the "GPL"), or
 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
 * in which case the provisions of the GPL or the LGPL are applicable instead
 * of those above. If you wish to allow use of your version of this file only
 * under the terms of either the GPL or the LGPL, and not to allow others to
 * use your version of this file under the terms of the MPL, indicate your
 * decision by deleting the provisions above and replace them with the notice
 * and other provisions required by the GPL or the LGPL. If you do not delete
 * the provisions above, a recipient may use your version of this file under
 * the terms of any one of the MPL, the GPL or the LGPL.
 *
 * ***** END LICENSE BLOCK ***** */

public class Main {
    /**
     * 
     * @param src
     * @param srcStart
     * @param dest
     * @param destStart
     * @param destBitOffset
     * @param lengthInBits
     *            In bits
     */
    public static void arrayCopy(byte[] src, int srcStart, byte[] dest,
            int destStart, int destBitOffset, int lengthInBits) {
        int c = 0;
        int nBytes = lengthInBits / 8;
        int nRestBits = lengthInBits % 8;

        for (int i = 0; i < nBytes; i++) {
            c |= ((src[srcStart + i] & 0xff) << destBitOffset);
            dest[destStart + i] |= (byte) (c & 0xff);
            c >>>= 8;
        }

        if (nRestBits > 0) {
            c |= ((src[srcStart + nBytes] & (0xff >> (8 - nRestBits))) << destBitOffset);
        }
        if ((nRestBits + destBitOffset) > 0) {
            dest[destStart + nBytes] |= c & 0xff;
        }
    }
}

Related

  1. arrayCopy(byte[] source, byte[] dest)
  2. arrayCopy(byte[] source, byte[] dest)
  3. arraycopy(byte[] src, int destLen, int len)
  4. arraycopy(byte[] src, int src_position, byte[] dst, int dst_position, int length)
  5. arrayCopy(byte[] src, int srcOffset, byte[] target, int targetOffset, int length)
  6. arraycopy(char[] A1, int offset1, char[] A2, int offset2, int length)
  7. arrayCopy(char[] chars)
  8. arrayCopy(double[][] src)
  9. arrayCopy(final byte[] src, final byte[] dest)