MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

base64 към guid към base64

Редът на байтовете в GUID не е същият като реда в техния ToString() представяне на системи с малък ред.

Трябва да използвате guid.ToByteArray(), а не ToString().

И трябва да използвате new Guid(byte[] b) за да го конструирате, а не $str .

За да изразите това в чист 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.
}

Разгледайте раздела „Основна структура“ на статията за GUID в Wikipedia за повече подробности.

Ще видите, че повечето от данните се съхраняват в "Native" endianness... откъдето идва объркването.

Да цитирам:

Редактиране:

Версия на Powershell:

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

Като допълнително предупреждение, можете по желание да отрежете "==" в края на вашия низ, тъй като той е само подложка (което може да помогне, ако се опитвате да спестите място).



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Какви са режийните разходи на Java ORM за MongoDB

  2. Каква е разликата между findOneAndUpdate и findOneAndReplace?

  3. Добавяне на BSON масив към BsonDocument в MongoDB

  4. MongoDB Aggregation Framework - Преименуване на динамично поле

  5. Асинхронният мидълуер Mongoose pre.save() не работи според очакванията