package net.mattmccutchen.measurements; public class BitFlicking { private BitFlicking() {} public static void storeLong(byte[] data, long val, int off) { //System.err.println("Store long: " + val); data[off ] = (byte)(val >> 56); data[off+1] = (byte)(val >> 48); data[off+2] = (byte)(val >> 40); data[off+3] = (byte)(val >> 32); data[off+4] = (byte)(val >> 24); data[off+5] = (byte)(val >> 16); data[off+6] = (byte)(val >> 8); data[off+7] = (byte)(val ); } public static void storeDouble(byte[] data, double val, int off) { storeLong(data, Double.doubleToRawLongBits(val), off); } public static long loadLong(byte[] data, int off) { long val = (((long)data[off ] & 0xFF) << 56) | ((long)(data[off+1] & 0xFF) << 48) | ((long)(data[off+2] & 0xFF) << 40) | ((long)(data[off+3] & 0xFF) << 32) | ((long)(data[off+4] & 0xFF) << 24) | ((long)(data[off+5] & 0xFF) << 16) | ((long)(data[off+6] & 0xFF) << 8) | ( (data[off+7] & 0xFF) ); //System.err.println("Load long: " + val); return val; } public static double loadDouble(byte[] data, int off) { return Double.longBitsToDouble(loadLong(data, off)); } }