sql >> Databáze >  >> NoSQL >> MongoDB

base64 na guid to base64

Pořadí bajtů v GUID není stejné jako pořadí v jejich ToString() reprezentace na systémech little-endian.

Měli byste použít guid.ToByteArray() spíše než ToString().

A měli byste použít new Guid(byte[] b) k jeho konstrukci, spíše než $str .

Abych to vyjádřil v čistém 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.
}

Podívejte se na část "Základní struktura" v článku GUID na Wikipedii, kde najdete další podrobnosti.

Uvidíte, že většina dat je uložena v "nativní" endianness... z toho pramení zmatek.

Cituji:

Upravit:

Verze Powershell:

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

Jako další upozornění můžete volitelně oříznout "==" z konce řetězce, protože je to pouze výplň (což může pomoci, pokud se snažíte ušetřit místo).



  1. Jak vynutit jedinečný vložený dokument v mongoidu

  2. Agregace MongoDb Manipulace s daty – objekty do polí

  3. Změna hesla v MongoDB pro stávajícího uživatele

  4. MongoDB dotaz v poli objektu