Text und Speicherfolge unterscheiden
RFC 9562 §4 verwendet standardmäßig Big-Endian-Felder, sofern das Protokoll nichts ausdrücklich anderes vorgibt.
Dieselbe ID in .NET hin und zurück
Wir führten den Code am 5. Oktober 2026 unter .NET 10.0.11 aus. ToByteArray() beginnt mit 33 22 11 00 55 44 77 46, ToByteArray(true) mit 00 11 22 33 44 55 46 77. Beide enden mit 88 99 aa bb cc dd ee ff. Der Standardkonstruktor stellt den Text aus dem Standardarray wieder her. Für das mit true erzeugte Array verwendeten wir den Konstruktor mit derselben expliziten Bytefolge. Die Umkehr aller 16 Bytes entspricht keiner Ausgabe dieses Beispiels.
$id = [guid]'00112233-4455-4677-8899-aabbccddeeff'
$bytes = $id.ToByteArray()
($bytes | ForEach-Object { $_.ToString('x2') }) -join ' '
# 33 22 11 00 55 44 77 46 88 99 aa bb cc dd ee ff
([guid]::new($bytes)).ToString()
# 00112233-4455-4677-8899-aabbccddeeff
$network = $id.ToByteArray($true)
([guid]::new($network, $true)).ToString()
# 00112233-4455-4677-8899-aabbccddeeffWas Moyoutil prüfen kann
Der aktuelle Generator erstellt v4-Zeichenfolgenlisten und ändert Großschreibung oder Text-/JSON-Darstellung. Binäre Arrays und GUID-Endian-Konvertierung bietet er nicht an. Bewahren Sie Zeichenfolgen als Integrationstestdaten auf und gleichen Sie die Bytevorgaben beider APIs ab. Vergleichen Sie Text, 16-Byte-Länge, erste drei Gruppen und letzte acht Bytes. Prüfen Sie den API-Vertrag, bevor Sie Bytes zur erzwungenen Übereinstimmung umkehren.
const id = '00112233-4455-4677-8899-aabbccddeeff';
const hex = id.replaceAll('-', '');
const bytes = Uint8Array.from(hex.match(/../g), s => parseInt(s, 16));
console.log(new TextEncoder().encode(hex).length, bytes.length);
// 32 16Häufig gestellte Fragen
Sind 32 Zeichen ohne Bindestriche eine 16-Byte-Datei?
Nein. Der Code erzeugt aus den 32 Zeichen mit UTF-8 32 Bytes; die Auswertung jedes Hexzeichenpaars ergibt 16 Bytes. Gleichen Sie auch vor Hashvergleichen die Eingabedarstellung ab.