Java BigDecimal putBigDecimal(byte[] bytes, int offset, BigDecimal val)

Here you can find the source of putBigDecimal(byte[] bytes, int offset, BigDecimal val)

Description

Put a BigDecimal value out to the specified byte array position.

License

Apache License

Parameter

Parameter Description
bytes the byte array
offset position in the array
val BigDecimal to write out

Return

incremented offset

Declaration

public static int putBigDecimal(byte[] bytes, int offset, BigDecimal val) 

Method Source Code

//package com.java2s;
/*//from ww  w. j a v  a 2s.  co  m
 * Copyright 2015 The RPC Project
 *
 * The RPC Project licenses this file to you 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.math.BigDecimal;

public class Main {
    /**
     * Size of int in bytes
     */
    public static final int SIZEOF_INT = Integer.SIZE / Byte.SIZE;

    /**
     * Put a BigDecimal value out to the specified byte array position.
     *
     * @param bytes  the byte array
     * @param offset position in the array
     * @param val    BigDecimal to write out
     * @return incremented offset
     */
    public static int putBigDecimal(byte[] bytes, int offset, BigDecimal val) {
        if (bytes == null) {
            return offset;
        }

        byte[] valueBytes = val.unscaledValue().toByteArray();
        byte[] result = new byte[valueBytes.length + SIZEOF_INT];
        offset = putInt(result, offset, val.scale());
        return putBytes(result, offset, valueBytes, 0, valueBytes.length);
    }

    /**
     * Put an int value out to the specified byte array position.
     * @param bytes the byte array
     * @param offset position in the array
     * @param val int to write out
     * @return incremented offset
     * @throws IllegalArgumentException if the byte array given doesn't have
     * enough room at the offset specified.
     */
    public static int putInt(byte[] bytes, int offset, int val) {
        if (bytes.length - offset < SIZEOF_INT) {
            throw new IllegalArgumentException("Not enough room to put an int at" + " offset " + offset + " in a "
                    + bytes.length + " byte array");
        }
        for (int i = offset + 3; i > offset; i--) {
            bytes[i] = (byte) val;
            val >>>= 8;
        }
        bytes[offset] = (byte) val;
        return offset + SIZEOF_INT;
    }

    /**
     * Put bytes at the specified byte array position.
     * @param tgtBytes the byte array
     * @param tgtOffset position in the array
     * @param srcBytes array to write out
     * @param srcOffset source offset
     * @param srcLength source length
     * @return incremented offset
     */
    public static int putBytes(byte[] tgtBytes, int tgtOffset, byte[] srcBytes, int srcOffset, int srcLength) {
        System.arraycopy(srcBytes, srcOffset, tgtBytes, tgtOffset, srcLength);
        return tgtOffset + srcLength;
    }
}

Related

  1. percentChange(BigDecimal oldValue, BigDecimal newValue)
  2. percentOf(BigDecimal fullAmount, int percentToKeep)
  3. percentToFactor(BigDecimal percent)
  4. printBigDecimal(BigDecimal decimal)
  5. printGainHTML(BigDecimal gain)
  6. randomBigDecimal()
  7. randomBigDecimalList(BigDecimal min, BigDecimal max, int minLength, int maxLength)
  8. rangedValue(BigDecimal lower, BigDecimal upper, Random random)
  9. readBigDecimal(byte valueBytes[], int valueLength, int scale)