sql >> Database teknologi >  >> NoSQL >> MongoDB

base64 til guide til base64

Rækkefølgen af ​​bytes i en GUID er ikke den samme som rækkefølgen i deres ToString() repræsentation på small-endian systemer.

Du bør bruge guid.ToByteArray() i stedet for at bruge ToString().

Og du bør bruge new Guid(byte[] b) at konstruere det, i stedet for $str .

For at udtrykke dette i ren C#:

public string GuidToBase64(Guid guid)
{
    return System.Convert.ToBase64String(guid.ToByteArray());  // Very similar to what you have.
}

public Guid Base64Toguid(string base64)
{
    var bytes = System.Convert.FromBase64String(base64);
    return new Guid(bytes);  // Not that I'm not building up a string to represent the GUID.
}

Tag et kig på "Basic Structure"-afsnittet i GUID-artiklen på Wikipedia for flere detaljer.

Du vil se, at de fleste data er gemt i "Native" endianness... hvilket er der, forvirringen kommer fra.

For at citere:

Rediger:

Powershell-version:

function base64toguid  
{  
    param($str);  
    $b = [System.Convert]::FromBase64String($str);
    $g = new-object -TypeName System.Guid -ArgumentList (,$b);
    return $g;
}

Som en ekstra advarsel kan du valgfrit trimme "==" af enden af ​​din streng, da det kun er polstring (hvilket kan hjælpe, hvis du forsøger at spare plads).



  1. Find værdier ved at bruge delvist nøglenavn i et Redis Sorteret sæt

  2. Nem måde at øge Mongoose-dokumentversioner for eventuelle opdateringsforespørgsler?

  3. hvordan man downloader en fil gemt i gridFS ved hjælp af nodeJS

  4. Spring Boot redisTemplate autokabelføring mislykkedes