.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];
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д