sql >> データベース >  >> NoSQL >> MongoDB

base64からGUID、base64

    GUIDのバイトの順序は、ToString()の順序と同じではありません。 リトルエンディアンシステムでの表現。

    ToString()を使用するのではなく、guid.ToByteArray()を使用する必要があります。

    また、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記事の"BasicStructure"セクション をご覧ください。 詳細については、ウィキペディアをご覧ください。

    ほとんどのデータが「ネイティブ」エンディアンに格納されていることがわかります...これが混乱の原因です。

    引用するには:

    編集:

    Powershellバージョン:

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

    追加の注意事項として、オプションで文字列の末尾から「==」を削除できます。これは単なるパディングであるためです(スペースを節約しようとしている場合に役立ちます)。



    1. ASP.NETセッション状態プロバイダーを使用してRedisサーバーに接続できません

    2. mongodb c#特定のフィールドドット表記を選択

    3. MongoDBは、すべてのフィールドを取得し、複数のフィールドから計算された値で並べ替えます

    4. 独自のAzureアカウントを持参–ScaleGridでのMongoDB®およびRedis™のホスティング