sto creando un GUID come questoGuid Byte Order in .NET
Guid g = new Guid(new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF });
Console.WriteLine(g);
Emette
03020100-0504-0706-0809-0a0b0c0d0e0f
Secondo Wikipedia ci sono quattro parti nel GUID e questo spiega il motivo per cui l'interruttore di ordine byte in quattro gruppi. Tuttavia l'articolo di Wikipedia afferma anche che tutte le parti sono memorizzate in formato Big Endian. Ovviamente le prime tre parti non sono Big Endian. Il metodo GetBytes() del guid restituisce i byte nello stesso ordine utilizzato per la creazione. Qual è la spiegazione di questo comportamento?
Secondo Wikipedia (non ho verificato i riferimenti) lo standard UUID di cui si suppone che il GUID sia stato di implementazione, le parti dovrebbero essere codificate in Big Endian. Sia l'UUID che le specifiche GUID definiscono che ci sono quattro parti di dimensioni 4, 2, 2 e 8 byte in questo ordine. – Stilgar
Infatti, e quando viene visualizzata l'ultima parte di 8 byte viene normalmente indicata come 2bytes-6bytes - entrambi sembrano essere big endian (come mostrato è il tuo esempio). – Grhm
Sì, gli ultimi 8 byte sono visualizzati come 2-6 nella rappresentazione della stringa, probabilmente per motivi di leggibilità, ma fanno parte della stessa parte di dati. La vera domanda è se Guid sta violando lo standard o c'è qualche altra spiegazione. – Stilgar