If the public interface in Data.UUID doesn't give you the flexibility you need, you should be able to find something here.
The UUID type. Represents 128-bits of identification.
Creates a UUID out of a list of bytes. Will throw an error if the list is not of length 16.
Creates a UUID out of a list of bytes. Does not perform a length check. Behavior is undefined for lists not of length 16.
Given a UUID, returns a pointer to the 16 bytes of memory that make up the UUID.