caaeaebb7c21a5296bc83645b6524e62c15349a9
[sixth-data.git] / src / main / java / eu / svjatoslav / sixth / data / model / ArrayStorage.java
1 /*
2  * Sixth Data. Copyright ©2012-2018, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of version 3 of the GNU Lesser General Public License
6  * or later as published by the Free Software Foundation.
7  */
8
9 package eu.svjatoslav.sixth.data.model;
10
11 public class ArrayStorage {
12
13     // load 16bit integer from byte array
14     public static int load16bit(final byte[] array, final int addr) {
15         // return (int)array[addr] + (int)array[addr+1]*256;
16         return ((array[addr + 1] & 0xFF) << 8) | (array[addr] & 0xFF);
17     }
18
19     // load 16bit integer from byte array
20     public static int load32bit(final byte[] array, final int addr) {
21         return ((array[addr + 3] & 0xFF) << 24)
22                 | ((array[addr + 2] & 0xFF) << 16)
23                 | ((array[addr + 1] & 0xFF) << 8) | (array[addr] & 0xFF);
24     }
25
26     // store 16bit integer into byte array
27     public static void store16bit(final byte[] array, final int addr,
28                                   final int value) {
29         final int byteHigh = value / 256;
30         final int byteLow = value - (byteHigh * 256);
31         array[addr] = (byte) byteLow;
32         array[addr + 1] = (byte) byteHigh;
33     }
34
35 }