字节数组的java GUID
我写这段代码是为了将GUID转换成字节数组。有人能在上面打洞或提出更好的建议吗
public static byte[] getGuidAsByteArray(){
UUID uuid = UUID.randomUUID();
long longOne = uuid.getMostSignificantBits();
long longTwo = uuid.getLeastSignificantBits();
return new byte[] {
(byte)(longOne >>> 56),
(byte)(longOne >>> 48),
(byte)(longOne >>> 40),
(byte)(longOne >>> 32),
(byte)(longOne >>> 24),
(byte)(longOne >>> 16),
(byte)(longOne >>> 8),
(byte) longOne,
(byte)(longTwo >>> 56),
(byte)(longTwo >>> 48),
(byte)(longTwo >>> 40),
(byte)(longTwo >>> 32),
(byte)(longTwo >>> 24),
(byte)(longTwo >>> 16),
(byte)(longTwo >>> 8),
(byte) longTwo
};
}
在C++中,我记得能够做到这一点,但是我想在java中没有办法用内存管理和所有的方法来做:
UUID uuid = UUID.randomUUID();
long[] longArray = new long[2];
longArray[0] = uuid.getMostSignificantBits();
longArray[1] = uuid.getLeastSignificantBits();
byte[] byteArray = (byte[])longArray;
return byteArray;
编辑
如果您想将完全随机的UUID生成为不符合任何正式类型的字节,这将比UUID生成的类型4 UUID更有效,并且浪费10 fewer bits。randomUUID():
public static byte[] getUuidAsBytes(){
int size = 16;
byte[] bytes = new byte[size];
new Random().nextBytes(bytes);
return bytes;
}
# 1 楼答案
您可以看看ApacheCommonsLang3Conversion.uuidToByteArray(...)。相反,请查看Conversion.byteArrayToUuid(...)以将其转换回UUID
# 2 楼答案
# 3 楼答案
我将依赖于内置功能:
或者类似的
(注意,未测试的代码!)
# 4 楼答案
您可以从apache commons中检查^{} 。您可能不想使用它,但请检查sources以了解其
getRawBytes()
方法是如何实现的: