1
mirror of https://github.com/Shiewk/SModeration.git synced 2026-04-28 05:54:16 +02:00
Files
SModeration/src/main/java/de/shiewk/smoderation/util/ByteUtil.java
T
2024-06-07 16:05:01 +02:00

46 lines
1.4 KiB
Java

package de.shiewk.smoderation.util;
import java.nio.ByteBuffer;
import java.util.UUID;
/**
* Utility class for byte-based saving of integers, longs and UUIDs
*/
public abstract class ByteUtil {
private ByteUtil(){}
public static byte[] longToBytes(long v){
ByteBuffer buffer = ByteBuffer.allocate(8);
buffer.putLong(v);
return buffer.array();
}
public static long bytesToLong(byte[] i){
if (i.length != 8){
throw new IllegalArgumentException("length must be 8");
}
ByteBuffer buffer = ByteBuffer.allocate(8);
buffer.put(0, i);
return buffer.getLong(0);
}
public static byte[] uuidToBytes(UUID uuid){
byte[] l = longToBytes(uuid.getLeastSignificantBits());
byte[] m = longToBytes(uuid.getMostSignificantBits());
return new byte[]{
m[0], m[1], m[2], m[3], m[4], m[5], m[6], m[7],
l[0], l[1], l[2], l[3], l[4], l[5], l[6], l[7]
};
}
public static UUID bytesToUuid(byte[] i){
if (i.length != 16){
throw new IllegalArgumentException("length must be 16, was " + i.length);
}
long l = bytesToLong(new byte[]{ i[8], i[9], i[10], i[11], i[12], i[13], i[14], i[15] });
long m = bytesToLong(new byte[]{ i[0], i[1], i[2], i[3], i[4], i[5], i[6], i[7] });
return new UUID(m, l);
}
}