NumberUtils.java 880 Bytes
/*
 * Copyright (C) 2015 The Telink Bluetooth Light Project
 *
 */
package com.telink.util;

public final class NumberUtils {

    private NumberUtils() {
    }

    static public int byteToInt(byte s, int bitStartPosition, int bitEndPosition) {
        int bit = bitEndPosition - bitStartPosition + 1;
        int maxValue = 1 << bit;
        int result = 0;

        for (int i = bitEndPosition, j = bit; i > bitStartPosition; i--, j--) {
            result += (s >> i & 0x01) << j;
        }

        return result & maxValue;
    }

    static public long bytesToLong(byte[] s, int start, int length) {
        int end = start + length;
        int max = length - 1;
        long result = 0;

        for (int i = start, j = max; i < end; i++, j--) {
            result += (s[i] & 0xFF) << (8 * j);
        }

        return result;
    }
}