我需要将在.NET中生成的Guid传递给Java应用程序。 这是我的GUID
ce095552-b466-4d03-ac41-430ec9286806
我希望将其设置为UUID变量!
UUID.nameUUIDFromBytes(stringUUID.getBytes())
UUID.fromString(stringUUID)
我收到错误
引起:java.lang.NumberFormatException:无效长:"" ce095552"
如何将GUID强制转换为UUID?
答案 0 :(得分:0)
UUID.fromString()
效果很好:
String guid = "ce095552-b466-4d03-ac41-430ec9286806";
UUID uuid = UUID.fromString(guid);
System.out.println(uuid);
答案 1 :(得分:0)
无效长:"" ce095552"
您传递给UUID.fromString
的GUID看起来仍然包含引号(")。确保GUID字符串不包含任何其他字符,它应该可以工作。
答案 2 :(得分:0)
例如,当你得到一些 Microsoft objectGUIDs ,组对象的Active Directory objectGUID时,需要获取二进制文件,然后将其转换为十六进制,之后需要生成MS GUID (查看 convertToDashedString 函数内的顺序字节序列)。
比较UUID和GUID的字节顺序不同:尝试使用在线转换器转换它,例如:robobunny converter
现在我正在存储和使用 ms guid
public static String convertMSGUIDToHexFormat(String guid){
guid = guid.replaceAll("-", "");
guid = guid.replaceAll("(.{8})(.{4})(.{4})(.{4})(.{12})", "$1-$2-$3-$4-$5").replaceAll("(.{2})(.{2})(.{2})(.{2}).(.{2})(.{2}).(.{2})(.{2})(.{18})", "$4$3$2$1-$6$5-$8$7$9");
guid = guid.replaceAll("-", "");
return guid;
}
public static String convertHexToMSGUIDFormat(String hex){
return hex.replaceAll("(.{8})(.{4})(.{4})(.{4})(.{12})", "$1-$2-$3-$4-$5").replaceAll("(.{2})(.{2})(.{2})(.{2}).(.{2})(.{2}).(.{2})(.{2})(.{18})", "$4$3$2$1-$6$5-$8$7$9");
}
当我知道更好的方法时,我就改变了所谓的快速修复