Как преобразовать двумерный двоичный объект в Dictonary<string, object> в C#, используя Binary Formatter

Я хочу преобразовать объект типа byte[][] в Dictonary.

Всегда выдается ошибка "Конец потока обнаружен до завершения анализа".

Пожалуйста, помогите мне.

 public static object ByteToObjectArray(byte[][] ms)
    {
        BinaryFormatter formatter = new BinaryFormatter();
        MemoryStream mStream = new MemoryStream();
        mStream.Write(ms, 0, (int)ms.Length);
        mStream.Position = 0;
        return formatter.Deserialize(mStream) as object;

    }

1 ответ

HGETALL должен вернуть данные как

key1
data1
key2
data2
...

Так чередовал... Теперь... Предположим, key находится в UTF8:

public static Dictionary<string, object> ByteToObjectArray(byte[][] bytes)
{
    var dict = new Dictionary<string, object>();
    var formatter = new BinaryFormatter();

    for (int i = 0; i < bytes.Length; i += 2)
    {
        string key = Encoding.UTF8.GetString(bytes[i]);
        // Alternatively
        //string key = Encoding.Unicode.GetString(bytes[i]);

        using (var stream = new MemoryStream(bytes[i + 1]))
        {
            object obj = formatter.Deserialize(stream);

            dict.Add(key, obj);
        }
    }

    return dict;
}
Другие вопросы по тегам