2009-07-29 2 views
0

Поиск размера хеш-таблицы .net при десериализацииПоиск размера .net hashtable

Если я прочитал из потока и вынул хэш-таблицу. Это их хороший способ узнать, насколько велика хэш-таблица. Т.е., если я посмотрю файл в двоичном редакторе, сколько байтов представляет эту хэш-таблицу? Как Deserialize mehthod знает, что входит в хэш?

IFormatter formatter = new BinaryFormatter(); 
table = (Hashtable)formatter.Deserialize(FileStream); 

Edit: То, что я пытаюсь выяснить, если бы я посмотреть на файл в двоичном редакторе, сколько этих данных в FileStream является моим Хеш. Или я могу сделать что-то вроде sizeof(), чтобы узнать размер (я подозреваю, что не могу).

+0

@Maestro, какого размера вы ищете? Число байтов сериализованной хэш-таблицы? –

+0

Даже если у вас был способ заглянуть в бинарный файл, который работал сегодня, он может измениться, как только изменится бинарный формат. –

+0

@John. Вы имеете в виду, изменился ли формат в файле, например, добавить новый ключ? Или вы имеете в виду, что .net изменил способ хранения? Извините за мое невежество, я просто пытаюсь понять. – Maestro1024

ответ

0

Возможно, этот фрагмент кода может помочь? Бесстыдный заимствованный от Victor Garcia Aprea. В статье предполагается, что переменная размера будет содержать количество байтов. Конечно, это сериализуется в строку, а не бинарно, как вы ищите.

Hashtable ht = new Hashtable(); 
for (int i = 0; i < 100; i++) 
{ 
    ht.Add(i, (i*10000).ToString()); 
} 

LosFormatter los = new LosFormatter(); //in System.Web namespace; used for ViewState 
StringWriter sw = new StringWriter(); 
los.Serialize(sw, ht); 
string resultSt = sw.GetStringBuilder().ToString(); 

int size = sw.GetStringBuilder().ToString().Length; 

Console.WriteLine(size); 
+0

Я думаю, что это должно сказать: string resultSt = sw.GetStringBuilder(). ToString(); int size = resultSt.Length; – Flipster

 Смежные вопросы

  • Нет связанных вопросов^_^