.NET 4.x Как прочесть массив из словаря (Dictionary) - C#
Формулировка задачи:
У меня есть словарь, состоящий из одной пары: число int и массив float.
Я не могу понять как мне прочитать значения float по индексу.
Например в словарь записан порядковый номер (int) и массив float. Как мне внутри того же номера обращаться к разным элементам массива по индексам?
И главный вопрос, есть ли способ скопировать этот массив float из словаря в обычный массив?
Что я пытался:
В этом коде я читаю двоичный файл и из него записываю в словарь матрицу 3х4 для каждой кости. В файле пока что 50 костей и 12 значений для каждой. Кол-во костей будет разное, а вот матрица всегда 3х4. Для моих нужд нужна матрица 4х4 поэтому я ее дополняю нулями.
Dictionary<int, float[]> inv_bind_mats = new Dictionary<int, float[]>();
float[] Farr = new float[16];
string path2 = Application.StartupPath + "\\skeletons" + skeletonName + ".bone_inv_trans_mats";
................................................................................
using (BinaryReader inv_trans_mats = new BinaryReader(File.Open(path2, FileMode.Open, FileAccess.Read, FileShare.Read), Encoding.ASCII))
{
inv_trans_mats.BaseStream.Seek(4, SeekOrigin.Begin);
bonesCount = inv_trans_mats.ReadUInt32();
for (int i = 0; i < bonesCount; i++)
{
for (int j = 0; j < 16; j++)
{
if (j < 12)
{
Farr[j] = inv_trans_mats.ReadSingle();
}
else if (j >= 12)
{
Farr[j] = 0.0f;
}
}
inv_bind_mats.Add(i, Farr);
}
}
MessageBox.Show(inv_bind_mats.Values.ElementAt(0).ToString());
}
EDIT: Разобрался, но почему-то вместо того чтобы для каждой кости записывать свой массив, этот код записывает один и тот же (последний) массив во все кости.
Решение задачи: «.NET 4.x Как прочесть массив из словаря (Dictionary)»
textual
Листинг программы
float[] Farr = new float[16];