DEADSOFTWARE

Initial commit.
[LongFlight.git] / src / code / kalter / longflight / ByteArrayInputStream.java
1 package code.kalter.longflight;
3 /**
4 * Удобное чтение разных типов с байтового массива
5 *
6 * @author KalterFive
7 */
8 public class ByteArrayInputStream {
10 private final byte[] array;
11 private int position;
13 public ByteArrayInputStream(byte[] array) {
14 this.array = array;
15 position = 0;
16 }
18 public byte readByte() {
19 return array[position++];
20 }
22 public short readShort() {
23 // AND для того, чтобы читать байт без знака
24 final short a = (short) (readByte() & 0x00FF);
25 final short b = (short) (readByte() & 0x00FF);
26 return (short) ((a << 8) | b);
27 }
29 public int readInteger() {
30 final int a = readShort();
31 final int b = readShort();
32 return (int) ((a << 16) | b);
33 }
35 public long readLong() {
36 final long a = readInteger();
37 final long b = readInteger();
38 return (long) ((a << 32) | b);
39 }
41 public byte[] toByteArray(int size) {
42 final byte[] array = new byte[size];
43 for (int i = 0; i < size; i++) {
44 array[i] = readByte();
45 }
46 return array;
47 }
49 public short[] toShortArray(int size) {
50 final short[] array = new short[size];
51 for (int i = 0; i < size; i++) {
52 array[i] = readShort();
53 }
54 return array;
55 }
57 public int[] toIntArray(int size) {
58 final int[] array = new int[size];
59 for (int i = 0; i < size; i++) {
60 array[i] = readInteger();
61 }
62 return array;
63 }
65 public long[] toLongArray(int size) {
66 final long[] array = new long[size];
67 for (int i = 0; i < size; i++) {
68 array[i] = readLong();
69 }
70 return array;
71 }
72 }