Как преобразовать двумерный двоичный объект в 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;
}