/* package whatever; // don't place package name! */
import java.io.*;
import java.lang.reflect.*;
import java.net.*;
import java.nio.*;
import java.text.*;
import java.util.*;
class Ideone
{
{
String idStr
= "4f5e73f72bb2492b9ffa7b12d55111f3"; System.
out.
println("Converting Guid string: " + idStr
);
UUID idUuid = fromGuidString(idStr);
System.
out.
println("To UUID: " + idUuid
);
String idStr2
= toGuidString
(idUuid
); System.
out.
println("Back to string: " + idStr2
); }
public static void reverse(byte[] bytes) {
if (bytes == null)
return;
int i = 0;
int j = bytes.length - 1;
byte hold;
while (j > i) {
hold = bytes[j];
bytes[j] = bytes[i];
bytes[i] = hold;
j--;
i++;
}
}
final protected static char[] hexArray = "0123456789ABCDEF".toCharArray();
public static String toHex
(byte[] bytes
) { char[] hexChars = new char[bytes.length * 2];
for ( int j = 0; j < bytes.length; j++ ) {
int v = bytes[j] & 0xFF;
hexChars[j * 2] = hexArray[v >>> 4];
hexChars[j * 2 + 1] = hexArray[v & 0x0F];
}
}
public static byte[] fromHex
(String hex
) { int len = hex.length();
byte[] data = new byte[len / 2];
for (int i = 0; i < len; i += 2) {
data
[i
/ 2] = (byte) ((Character.
digit(hex.
charAt(i
),
16) << 4) }
return data;
}
public static String toGuidString
(UUID uuid
) { byte[] guidBytes = toGuidBytes(uuid);
return to;
}
public static UUID fromGuidString
(String guid
) { guid = guid.replaceAll("-","");
byte[] guidBytes = fromHex(guid);
UUID to = fromGuidBytes(guidBytes);
return to;
}
public static UUID fromGuidBytes(byte[] guidBytes) {
ByteBuffer buf = ByteBuffer.wrap(guidBytes);
byte[] first4 = new byte[4];
buf.get(first4);
reverse(first4);
byte[] second2 = new byte[2];
buf.get(second2);
reverse(second2);
byte[] third2 = new byte[2];
buf.get(third2);
reverse(third2);
long lsb = buf.getLong();
buf = ByteBuffer.wrap(new byte[8])
.put(first4)
.put(second2)
.put(third2);
buf.rewind();
long msb = buf.getLong();
return new UUID(msb, lsb);
}
public static byte[] toGuidBytes(UUID theUuid) {
ByteBuffer first8 = ByteBuffer.allocate(8);
first8.putLong(theUuid.getMostSignificantBits());
first8.rewind();
byte[] first4 = new byte[4];
first8.get(first4);
reverse(first4);
byte[] second2 = new byte[2];
first8.get(second2);
reverse(second2);
byte[] third2 = new byte[2];
first8.get(third2);
reverse(third2);
ByteBuffer converted16 = ByteBuffer.allocate(16)
.put(first4)
.put(second2)
.put(third2);
ByteBuffer last8 = ByteBuffer.allocate(8);
last8.putLong(theUuid.getLeastSignificantBits());
last8.rewind();
converted16.put(last8);
return converted16.array();
}
}