0

私は現在、myResultをバイト配列の辞書として出力する関数を持っています。エントリごとに複数のバイト配列を格納できるため、バイトのリストの辞書に変換したいと思います。配列をリストに置き換える形式と、各配列をリストに追加する方法を教えてください。現在の形式は次のとおりです。

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 に答える