Аватар для Dulliane
0 / 0 / 0
Регистрация: 02.04.2014
Сообщений: 72

Значения не записываются в массив

14.05.2014, 17:18. Показов 2234. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
private void Play(double[] PSignal, string fileName)
        {
            byte[] resultbytes = new byte[PSignal.Length * 3 + 43];
            BinaryReader br = new BinaryReader(File.OpenRead(fileName), Encoding.ASCII);
            br.ReadBytes(43).CopyTo(resultbytes,0);
            br.Close();
            for (int i = 0, j = 0; i < PSignal.Length; j += 3, i++)
            {
                resultbytes[42 + j] = BitConverter.GetBytes(PSignal[i])[0];
                resultbytes[43 + j] = BitConverter.GetBytes(PSignal[i])[1];
                resultbytes[44 + j] = BitConverter.GetBytes(PSignal[i])[2];
            }
        }
всем привет. пишу метод для конвертации дабл массива в байтовый для дальнейшего преобразования в поток, чтобы потом все это дело послушать как wav. не могу понять почему в массив resultbytes не идет запись в цикле. а именно начиная с 44 индекса все нули после цикла
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.05.2014, 17:18
Ответы с готовыми решениями:

Не записываются числа из файла в массив
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace...

В массив не записываются значения
В массив не записываются значения :( Заранее спасибо за помощь #include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; #include...

В массив не правильно записываются значения
Такая задача: Из массивов А и В сформировать массив С, записав в него элементы массивов А и В с четными индексами Вот как я пытался...

14
1168 / 886 / 517
Регистрация: 09.04.2014
Сообщений: 2,102
14.05.2014, 17:45
может стоит попроще?
C#
1
2
3
4
5
6
7
8
9
10
11
12
private void Play(double[] PSignal, string fileName)
        {
            List<byte> result = new List<byte>(PSignal.Length * 3 + 43);
            BinaryReader br = new BinaryReader(File.OpenRead(fileName), Encoding.ASCII);
            result.AddRange(br.ReadBytes(43));
            br.Close();
            foreach (var signal in PSignal)
            {
                result.AddRange(BitConverter.GetBytes(signal));
            }
            byte[] resultbytes = result.ToArray(); //если уж нужно byte[]
        }
Добавлено через 3 минуты
Цитата Сообщение от Dulliane Посмотреть сообщение
не идет запись в цикле. а именно начиная с 44 индекса все нули после цикла
а Вы проследите значения индексов в массиве куда Вы вносите данные для j=0,1,2... и окажется, что Вы надписываете елементы массива при каждой итерации
1
 Аватар для Dulliane
0 / 0 / 0
Регистрация: 02.04.2014
Сообщений: 72
14.05.2014, 18:02  [ТС]
Вы проследите значения индексов в массиве куда Вы вносите данные для j=0,1,2... и окажется, что Вы надписываете елементы массива при каждой итерации
не понял. даже на самом первом шаге ничего не присваивается здесь
C#
1
resultbytes[42 + j] = BitConverter.GetBytes(PSignal[i])[0];
что значит надписываю?
0
1168 / 886 / 517
Регистрация: 09.04.2014
Сообщений: 2,102
14.05.2014, 18:05
Цитата Сообщение от Dulliane Посмотреть сообщение
что значит надписываю?
j=0 >> 42 43 44
j=1 >> 43 44 45
...
0
 Аватар для Dulliane
0 / 0 / 0
Регистрация: 02.04.2014
Сообщений: 72
14.05.2014, 18:07  [ТС]
C#
1
j += 3
0
1168 / 886 / 517
Регистрация: 09.04.2014
Сообщений: 2,102
14.05.2014, 18:12
C#
1
2
3
4
5
6
7
8
9
10
int idx = 43;
            for (int i = 0; i < PSignal.Length; i++)
            {
                byte[] b = BitConverter.GetBytes(PSignal[i]);
                for (int j = 0; j < 3; j++)
                {
                    resultbytes[idx] = b[j];
                    idx++;
                }
            }
Добавлено через 1 минуту
Цитата Сообщение от Dulliane Посмотреть сообщение
j += 3
недоглядел
0
 Аватар для Dulliane
0 / 0 / 0
Регистрация: 02.04.2014
Сообщений: 72
14.05.2014, 18:16  [ТС]
тут в самом получвшемся байтовом массиве после конвертации сначала нули идут, вот и записывает нули b[]
0
1168 / 886 / 517
Регистрация: 09.04.2014
Сообщений: 2,102
14.05.2014, 18:19
1. все равно, с индексами не порядок, так как PSignal нужно начинать вносить с 43 байта, а не с 42 (это не влияет на значения, но все же)
2. проверьте значения в PSignal
0
 Аватар для Dulliane
0 / 0 / 0
Регистрация: 02.04.2014
Сообщений: 72
14.05.2014, 18:21  [ТС]
1)исправил
2)не знаю , значения как значения ,
0
1168 / 886 / 517
Регистрация: 09.04.2014
Сообщений: 2,102
14.05.2014, 18:28
Цитата Сообщение от Dulliane Посмотреть сообщение
пишу метод для конвертации дабл массива в байтовый для дальнейшего преобразования в поток
а почему бы сразу не записывать их в поток (MemoryStream)? А те 43 байта с файла - это стандартный header wav-файла? Его то лучше внести в код как костанту, а не читать с файла - быстрее и не страшно, что кто-то файл удалит.
0
 Аватар для Dulliane
0 / 0 / 0
Регистрация: 02.04.2014
Сообщений: 72
14.05.2014, 18:32  [ТС]
блин, вообще пробиваюсь сквозь стену неведания чего нужно делть, потому все так сложно делаю.
А те 43 байта с файла - это стандартный header wav
да. хорошо попробую.
0
1168 / 886 / 517
Регистрация: 09.04.2014
Сообщений: 2,102
14.05.2014, 19:36
И еще один мелкий нюанс: double занимает 8 байт, а не 3.... Вы уверенны, что Вам нужно первых 3?

Добавлено через 8 минут
Для почитать Synthesizing Simple Wave Audio using C#
0
 Аватар для Dulliane
0 / 0 / 0
Регистрация: 02.04.2014
Сообщений: 72
14.05.2014, 21:20  [ТС]
дело в том, что в методе считывания
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
......................
for (long i = 0; i < SumCO; i++)
            {
                buffer[0] = br.ReadByte();
                buffer[1] = br.ReadByte();
                buffer[2] = br.ReadByte();
                if (((sbyte)buffer[2]) < 0)
                {
                    buffer[3] = 0xff;
                }
                else
                {
                    buffer[3] = 0;
                }
                Data[i] = BitConverter.ToInt32(buffer, 0);
            }
метод считывания wav нне мой, я не пойму почему именно они по 4 байта считывали, мне почему то сказали здесь три первых байта от числа брать.
слушай, а можно с тобой где-то вне форума пообщаться, мб направишь меня на путь истинный, ато я совсем потерянный студент vk например...
0
1168 / 886 / 517
Регистрация: 09.04.2014
Сообщений: 2,102
14.05.2014, 22:47
Цитата Сообщение от Dulliane Посмотреть сообщение
Data[i] = BitConverter.ToInt32(buffer, 0);
так данные Int32[], а не double[]
Цитата Сообщение от Dulliane Посмотреть сообщение
double[] PSignal
Цитата Сообщение от Dulliane Посмотреть сообщение
а можно с тобой где-то вне форума пообщаться
нет меня нигде кроме тут

Добавлено через 5 минут
Цитата Сообщение от Dulliane Посмотреть сообщение
три первых байта от числа брать
Видимо предполагается 24 битный wav, как видишь 4 байт генерируется самой программой, т.е. не содержит считываемых данных
0
 Аватар для Dulliane
0 / 0 / 0
Регистрация: 02.04.2014
Сообщений: 72
15.05.2014, 13:18  [ТС]
изменил код
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
private void Play(double[] PSignal, string fileName)
        {
byte[] resultbytes = new byte[PSignal.Length * 4 + 43];
                BinaryReader br = new BinaryReader(File.OpenRead(fileName), Encoding.ASCII);
                br.ReadBytes(43).CopyTo(resultbytes, 0);
                br.Close();
                
                byte[] longg = BitConverter.GetBytes(PSignal.Length);
                for (int l = 0; l <= 3; l++)
                    resultbytes[39 + l] = longg[l];
                
                int idx = 43;
                for (int i = 0; i < PSignal.Length; i++)
                {
                    int tmp = (int)PSignal[i];
                    byte[] b = BitConverter.GetBytes(tmp);
                    for (int j = 3; j >= 0; j--, idx++) // если брать j = 0; j <= 3; j++ то не работает. это как то связано с little-endian предствалением ? 
                        resultbytes[idx] = b[j];
                }
                new SoundPlayer(new MemoryStream(resultbytes)).Play();
}
копирую заголовок от старого wav , переписываю значение длины в нем, далее записываю все в байтовый массив как и было. но теперь меня ошибка доступа к памяти на последней строке кода. не понимаю что не так.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.05.2014, 13:18
Помогаю со студенческими работами здесь

В БД не записываются значения
Этот сервис обрабатывает поступившее сообщение. sms_body_name и sms_body_text имеют нужные значения (строка 65 и 66), а вот в БД вообще...

Не записываются значения в форму
Добрый день! Последовательность действий такая : запрашиваю json файл и распарсиваю его, далее эти значения кладу в форму coeff через цикл....

Значения не записываются в файл
Значения переменной y не записываются в файл, компилятор CodeBlocks. Подскажите, где ошибка? #include &lt;iostream&gt; #include...

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

В выходной фаил записываются вместе с ответом записываются каракули. Помогите исправить ошибку
#include &lt;iostream&gt; using namespace std; void funk (int n, int k) { freopen(&quot;input.txt&quot;, &quot;rt&quot;, stdin); ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru