Problem with UUID and GUID

2019-07-31 08:55发布

问题:

Please don't mark this as duplicate. I have gone through all posts on this topic but couldn't solve my problem.

I have an application in J2ME that searches for bluetooth services with a particular UUID:

UUID[] uuidSet = { new UID("100000",true) };
int[] attrSet = {0x0100, 0x0003, 0x0004};
int transID = agent.searchServices(attrSet,uuidSet,remoteDevice,this);

I have a desktop application in VB.NET using 32feet.NET library that creates a new bluetooth service with a particular GUID.

Sub startBluetoothListener()
    Dim lsnr As New BluetoothListener(MyConsts.MyServiceUuid, record)
    lsnr.Start()
    Dim conn As New BluetoothClient
    Dim peerStream As Stream            
End Sub

Class MyConsts
Public Shared ReadOnly MyServiceUuid As Guid _
  = New Guid("{7dc53df5-703e-49b3-8670-b1c468f47f1f}")
End Class

Now as per rules, in order to function both GUID/UUID should match. However in .NET the GUID is represented as a hexadecimal string and in JAVA it's different. I googled a lot about how to sync the J2ME and .NET GUID/UUID but could not succeed.

回答1:

I've read the source for the j2me implementation of UUID, and it simply seems to indicate that you omit the braces and the hyphens i.e. use:

new UUID("7dc53df5703e49b38670b1c468f47f1f", false)

if you use the true parameter, it expects a short-form UUID (i.e. 8 characters long)

My original answer was based on the J2SE implementation, viz:

isn't the constructor for a UUID from a string:

UUID aUUID = UUID.fromString("")

where the string is:

7dc53df5-703e-49b3-8670-b1c468f47f1f

in the case of your UUID (i.e. remove the leading '{' and trailing '}' from the Guid string)