Distinguer le texte du stockage

RFC 9562 §4 adopte des champs big-endian par défaut, sauf règle explicite du protocole.

RFC 9562 §4

Huit premiers octets d’un UUID fictif dans les ordres RFC et .NET par défaut ; huit derniers identiques
Schéma original des résultats reproduits. Les groupes initiaux de 4, 2 et 2 octets s’inversent séparément ; les huit derniers restent identiques. Ce n’est pas une capture de base de données.

Aller-retour du même identifiant dans .NET

Nous avons exécuté le code avec .NET 10.0.11 le 5 octobre 2026. ToByteArray() commence par 33 22 11 00 55 44 77 46 ; ToByteArray(true), par 00 11 22 33 44 55 46 77. Les deux finissent par 88 99 aa bb cc dd ee ff. Le constructeur par défaut restaure la chaîne depuis le tableau par défaut. Pour le tableau produit avec true, nous avons utilisé le constructeur précisant ce même ordre. Inverser les 16 octets ne correspond à aucun de ces résultats.

$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-aabbccddeeff

Microsoft .NET 10: Guid.ToByteArray

Ce que Moyoutil permet de vérifier

Le générateur actuel crée des listes de chaînes v4 et change la casse ou l’affichage texte/JSON. Il n’exporte pas de tableau binaire et ne convertit pas l’ordre GUID. Conservez les chaînes pour tester l’intégration et accordez les règles des deux API. Comparez la chaîne, la longueur de 16 octets, les trois premiers groupes et les huit derniers octets. Vérifiez le contrat de l’API avant d’inverser des octets pour forcer une correspondance.

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 16

Questions fréquemment posées

Les 32 caractères sans tirets sont-ils un fichier de 16 octets ?

Non. Dans le code, UTF-8 encode ces caractères en 32 octets ; interpréter chaque paire hexadécimale produit 16 octets. Accordez aussi la représentation d’entrée avant de comparer les empreintes.