0

我目前有一个输出 myResult 字节数组字典的函数。我想将其转换为字节列表字典,因为对于每个条目,我可能存储超过 1 个字节数组。用列表替换数组的格式是什么以及如何将每个数组添加到列表中。当前格式如下:

int img_sz = img0->width * img0->height * img0->nChannels;

array <Byte>^ hh = gcnew array<Byte> (img_sz);

Marshal::Copy( (IntPtr)img->imageData, hh, 0, img_sz );

Dictionary<String^,array< Byte >^>^ myResult = gcnew Dictionary<String^,array< Byte >^>(); 

myResult["OVERVIEW"]=hh;

任何帮助表示赞赏。

4

1 回答 1

1

我不完全确定您要选择哪一个,所以我会同时回答它们。

Dictionary<String^, List<Byte>^>^

如果您想以 结尾Dictionary<String^, List<Byte>^>^,只需调用带有 的List<T> 构造函数IEnumerable<T>然后像现在一样将其添加到字典中。

Dictionary<String^,List<Byte>^>^ myResult = gcnew Dictionary<String^,List<Byte>^>(); 

myResult["OVERVIEW"] = gcnew List<Byte>(hh);

Dictionary<String^, List<array<Byte>^>^>^

如果您想以 结尾Dictionary<String^, List<array<Byte>^>^>^,您需要检查字典以查看它是否作为该键的列表,如果不是,则添加列表,然后将新数组添加到列表中。使用要存储每个数组的各种数组和列表的名称调用此方法。

void AddToResults(Dictionary<String^, List<array<Byte>^>^>^ myResult, 
                  String^ key, 
                  array<Byte>^ hh)
{
    List<array<Byte>^>^ thisList;

    if(!myResult->TryGetValue(key, thisList))
    {
        thisList = gcnew List<array<Byte>^>();
        myResult->Add(key, thisList);
    }

    thisList->Add(hh);
}
于 2012-07-17T19:25:25.797 回答