| Nils Diewald | f399a67 | 2013-11-18 17:55:22 +0000 | [diff] [blame] | 1 | package de.ids_mannheim.korap.util; |
| 2 | |
| 3 | import java.util.*; |
| 4 | |
| Nils Diewald | f399a67 | 2013-11-18 17:55:22 +0000 | [diff] [blame] | 5 | /** |
| Nils Diewald | fe6a365 | 2015-02-05 20:34:27 +0000 | [diff] [blame] | 6 | * A collection of byte and byte array related |
| 7 | * utility functions. |
| Nils Diewald | f399a67 | 2013-11-18 17:55:22 +0000 | [diff] [blame] | 8 | * |
| Nils Diewald | fe6a365 | 2015-02-05 20:34:27 +0000 | [diff] [blame] | 9 | * @author diewald |
| Nils Diewald | f399a67 | 2013-11-18 17:55:22 +0000 | [diff] [blame] | 10 | */ |
| 11 | public class KorapByte { |
| 12 | |
| 13 | /** |
| 14 | * Convert an integer to a byte array. |
| 15 | * |
| 16 | * @param number The number to convert. |
| Nils Diewald | fe6a365 | 2015-02-05 20:34:27 +0000 | [diff] [blame] | 17 | * @return The translated byte array. |
| Nils Diewald | f399a67 | 2013-11-18 17:55:22 +0000 | [diff] [blame] | 18 | */ |
| Nils Diewald | fe6a365 | 2015-02-05 20:34:27 +0000 | [diff] [blame] | 19 | // Based on |
| 20 | // http://www.tutorials.de/java/228129-konvertierung-von-integer-byte-array.html |
| Nils Diewald | f399a67 | 2013-11-18 17:55:22 +0000 | [diff] [blame] | 21 | public static byte[] int2byte (int number) { |
| Nils Diewald | fe6a365 | 2015-02-05 20:34:27 +0000 | [diff] [blame] | 22 | byte[] data = new byte[4]; |
| 23 | for (int i = 0; i < 4; ++i) { |
| 24 | int shift = i << 3; // That's identical to i * 8 |
| 25 | data[3-i] = (byte)((number & (0xff << shift)) >>> shift); |
| 26 | }; |
| 27 | return data; |
| Nils Diewald | f399a67 | 2013-11-18 17:55:22 +0000 | [diff] [blame] | 28 | }; |
| 29 | |
| Nils Diewald | fe6a365 | 2015-02-05 20:34:27 +0000 | [diff] [blame] | 30 | |
| Nils Diewald | f399a67 | 2013-11-18 17:55:22 +0000 | [diff] [blame] | 31 | /** |
| 32 | * Convert a byte array to an integer. |
| 33 | * |
| Nils Diewald | fe6a365 | 2015-02-05 20:34:27 +0000 | [diff] [blame] | 34 | * @param data The byte array to convert. |
| 35 | * @return The translated integer. |
| Nils Diewald | f399a67 | 2013-11-18 17:55:22 +0000 | [diff] [blame] | 36 | */ |
| Nils Diewald | fe6a365 | 2015-02-05 20:34:27 +0000 | [diff] [blame] | 37 | // Based on |
| 38 | // http://www.tutorials.de/java/228129-konvertierung-von-integer-byte-array.html |
| Nils Diewald | f399a67 | 2013-11-18 17:55:22 +0000 | [diff] [blame] | 39 | public static int byte2int (byte[] data) { |
| Nils Diewald | fe6a365 | 2015-02-05 20:34:27 +0000 | [diff] [blame] | 40 | return byte2int(data, 0); |
| Nils Diewald | f399a67 | 2013-11-18 17:55:22 +0000 | [diff] [blame] | 41 | }; |
| 42 | |
| Nils Diewald | f399a67 | 2013-11-18 17:55:22 +0000 | [diff] [blame] | 43 | |
| Nils Diewald | fe6a365 | 2015-02-05 20:34:27 +0000 | [diff] [blame] | 44 | /** |
| 45 | * Convert a byte array to an integer. |
| 46 | * |
| 47 | * @param data The byte array to convert. |
| 48 | * @param offset The byte offset. |
| 49 | * @return The translated integer. |
| 50 | */ |
| 51 | // Based on |
| 52 | // http://www.tutorials.de/java/228129-konvertierung-von-integer-byte-array.html |
| 53 | public static int byte2int (byte[] data, int offset) { |
| 54 | int number = 0; |
| 55 | int i = (offset * 4); |
| 56 | for (; i < 4; ++i) |
| 57 | number |= (data[3-i] & 0xff) << (i << 3); |
| 58 | return number; |
| Nils Diewald | f399a67 | 2013-11-18 17:55:22 +0000 | [diff] [blame] | 59 | }; |
| Nils Diewald | f399a67 | 2013-11-18 17:55:22 +0000 | [diff] [blame] | 60 | }; |