Project/build/packaging adjustments + version 1.3
[measurements/measurements.git] / src / net / mattmccutchen / measurements / BitFlicking.java
CommitLineData
3f5430db
MM
1package net.mattmccutchen.measurements;
2
3public class BitFlicking {
4 private BitFlicking() {}
5
6 public static void storeLong(byte[] data, long val, int off) {
7 //System.err.println("Store long: " + val);
8 data[off ] = (byte)(val >> 56);
9 data[off+1] = (byte)(val >> 48);
10 data[off+2] = (byte)(val >> 40);
11 data[off+3] = (byte)(val >> 32);
12 data[off+4] = (byte)(val >> 24);
13 data[off+5] = (byte)(val >> 16);
14 data[off+6] = (byte)(val >> 8);
15 data[off+7] = (byte)(val );
16 }
17
18 public static void storeDouble(byte[] data, double val, int off) {
19 storeLong(data, Double.doubleToRawLongBits(val), off);
20 }
21
22 public static long loadLong(byte[] data, int off) {
23 long val =
24 (((long)data[off ] & 0xFF) << 56)
25 | ((long)(data[off+1] & 0xFF) << 48)
26 | ((long)(data[off+2] & 0xFF) << 40)
27 | ((long)(data[off+3] & 0xFF) << 32)
28 | ((long)(data[off+4] & 0xFF) << 24)
29 | ((long)(data[off+5] & 0xFF) << 16)
30 | ((long)(data[off+6] & 0xFF) << 8)
31 | ( (data[off+7] & 0xFF) );
32 //System.err.println("Load long: " + val);
33 return val;
34 }
35
36 public static double loadDouble(byte[] data, int off) {
37 return Double.longBitsToDouble(loadLong(data, off));
38 }
39}