MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

base64 do przewodnika do base64

Kolejność bajtów w identyfikatorze GUID nie jest taka sama jak kolejność w ich ToString() reprezentacja w systemach little-endian.

Powinieneś używać guid.ToByteArray() zamiast ToString().

I powinieneś użyć new Guid(byte[] b) aby go skonstruować, a nie $str .

Aby wyrazić to w czystym 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.
}

Zajrzyj do sekcji „Struktura podstawowa” w artykule GUID na Wikipedii, aby uzyskać więcej informacji.

Zobaczysz, że większość danych jest przechowywana w „natywnej” endianowości… skąd bierze się zamieszanie.

Cytując:

Edytuj:

Wersja Powershell:

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

Jako dodatkowe zastrzeżenie możesz opcjonalnie przyciąć "==" z końca ciągu, ponieważ jest to tylko dopełnienie (co może pomóc, jeśli próbujesz zaoszczędzić miejsce).



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB GridFS - Czy to nazwa pliku czy nazwa pliku?

  2. Wstawienie mongodb pokazuje "ciągi w dokumentach muszą być poprawne UTF-8"

  3. Zapytania odrębne za pomocą MongoMapper

  4. Jak mogę rozwiązać MongoWaitQueueFullException?

  5. .updateOne w MongoDB nie działa w Node.js