web-dev-qa-db-fra.com

Convertir octet [] ou objet en GUID

J'ai assigné une valeur au type de données d'objet comme, 

object objData =dc.GetDirectoryEntry().Properties["objectGUID"].Value;

cet objet renvoie la valeur comme {byte[16]} [0]: 145 [1]: 104 [2]: 117 [3]: 139 [4]: 124 [5]: 15 [6]: 255 [7]: 68 [8]: 142 [9]: 159 [10]: 208 [11]: 102 [12]: 148 [13]: 157 [14]: 179 [15]: 75

Puis je jette cet objet en octet [], comme

byte[] binaryData = objData as byte[];

Il retournera aussi comme, {byte[16]} [0]: 145 [1]: 104 [2]: 117 [3]: 139 [4]: 124 [5]: 15 [6]: 255 [7]: 68 [8]: 142 [9]: 159 [10]: 208 [11]: 102 [12]: 148 [13]: 157 [14]: 179 [15]: 75

Puis je convertis les valeurs hexadécimales d'octet [] comme, 

string strHex = BitConverter.ToString(binaryData);

Ce sera le retour comme **91-68-75-8B-7C-0F-FF-44-8E-9F-D0-66-94-9D-B3-4B** .. Mais j'ai besoin de la sortie comme GUID format, comment puis-je y parvenir?

17

Pourquoi ne pas utiliser le constructeur Guid qui prend un tableau d'octets ?

Guid guid = new Guid(binaryData);

(Vous pouvez ensuite utiliser Guid.ToString() pour l’obtenir sous forme de texte si vous en avez besoin.)

47
Jon Skeet
byte[] binaryData = objData as byte[];
string strHex = BitConverter.ToString(binaryData);
Guid id = new Guid(strHex.Replace("-", ""))
2
André Voltolini

Le long formulaire serait ( entrez la description du lien ici ):

public static string ConvertGuidToOctectString(string objectGuid)
{
    System.Guid guid = new Guid(objectGuid);
    byte[] byteGuid = guid.ToByteArray();
    string queryGuid = "";
    foreach (byte b in byteGuid)
    {
        queryGuid += @"\" + b.ToString("x2");
    }
    return queryGuid;
}
2
Michael Flyger

La classe System.DirectoryServices.DirectoryEntry a la propriété Guid à cette fin - il n'est pas nécessaire d'accéder à l'attribut objectGUID via Properties.

0
dahvyd