|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
18.07.2015, 17:10 | #1 |
Форумчанин
Регистрация: 12.02.2010
Сообщений: 787
|
Неформатированный бинарный файл с 16-ти битными отсчетами
У меня есть числа от -32767 до + 32767. Сначала я перевел их в биты, получилась матрица, в которой строки - это массив этих чисел, а число столбцов = 16, то есть разрядность. Я сохранил каждую строку в текстовый файл без знаков препинания. Призадумался. Не форматированный бинарный файл с 16-ти битными отсчетами. Все-таки, как это? может у меня должны при открытии блокнотом получиться не 101010..., а те же 32000, 16000, 15000, только записанные каким-то чудесным образом? Прошу помочь разобраться, пс - я не программист и просто физически не могу этого знать.
|
18.07.2015, 17:46 | #2 |
Цифровой кот
Старожил
Регистрация: 29.08.2014
Сообщений: 7,629
|
Как звучит оригинал задания?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
|
18.07.2015, 17:49 | #3 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Покажи код что у тебя уже готово.
I'm learning to live...
|
18.07.2015, 18:07 | #4 |
Цифровой кот
Старожил
Регистрация: 29.08.2014
Сообщений: 7,629
|
И вообще, "неформатированный бинарный файл" не выглядит никак. Вернее, он выглядит так, как этого хочет тот, кто его рассматривает. Например, возьмём любой файл. Он может выглядеть так:
или так: можешь убедиться, это один и тот же файл, я его залил на файлопомойку, посмотри. Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
|
18.07.2015, 19:06 | #6 | ||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Дело в том, что это бинарный (двоичный) файл. Разница между текстовым и бинарным в том, что текстовый человек сможет прочитать и понять с экрана, даже если он далек от компьютерной техники. Ты пойми - любой файл бинарный. И текстовый тоже является разновидностью бинарного. Цитата:
I'm learning to live...
|
||
18.07.2015, 19:21 | #7 | |
Форумчанин
Регистрация: 01.06.2015
Сообщений: 497
|
Цитата:
Чтение такого файла на C++ будет выглядеть как: Код:
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
Последний раз редактировалось Krasiosoft; 18.07.2015 в 19:29. |
|
20.07.2015, 21:35 | #8 |
Форумчанин
Регистрация: 12.02.2010
Сообщений: 787
|
Ок, я задачу-то решил, и мне скучно ее решать по-другому, а придется. Поэтому я ничего не теряю, и просто вот вам предложение сказать мне, как эту задачу решить в 5 программных строчек?! Там же DDS генератор по сути дела.
Cформировать синусоидальный сигнал с нулевой начальной фазой с частотой 837.7 Гц на частоте дискретизации 8 кГц. Разрядность сигнала 16 бит. Длительность сигнала 18 секунд. Амплитуда сигнала -6 дБ от full-scale 16-битной синусоиды. Таблица синусов длиной 512 элементов задана. Выходные данные: записать полученный сигнал в неформатированный бинарный файл с 16-битными отсчетами Дополнительные условия: не использовать операции с плавающей точкой Язык реализации: C То есть я могу выбирать любые элементы из таблицы, но вот алгоритм на С нужен, как это делать, чтобы получилась частота 837,7 Гц. Давайте начнем вообще с того, сколько вариантов решения задачи имеется, какие?=) Последний раз редактировалось Krasi; 20.07.2015 в 21:37. |
20.07.2015, 22:03 | #9 |
Форумчанин
Регистрация: 01.06.2015
Сообщений: 497
|
С частотами не работал, но готов помочь с реализацией на С, если сможете все подробно объяснить.
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
|
21.07.2015, 09:26 | #10 |
Форумчанин
Регистрация: 12.02.2010
Сообщений: 787
|
Нужно взять из таблицы специальные значения, соответствующие амплитудным значениям сигнала частотой 837,7 Гц, это и будет требуемый сигнал, который можно будет воспроизвести на частоте дискретизации 8000 Гц. Но суть в том, что этот сигнал - просто 16-битные числа, то есть если выборок сигнала будет 144000, то размер файла должен быть 144000*16/8 = 288 кбайт. Вот такой файлик мне и нужно получить. Но проблема как раз в том, что я не сильно понимаю именно то, как нужно правильно выбирать выборки из таблицы длиной 512, чтобы получилась требуемая частота, а код был простым и длиной всего в 5-7 строк.
Последний раз редактировалось Krasi; 21.07.2015 в 09:28. |
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Бинарный файл | lelik346 | Софт | 7 | 04.12.2014 09:13 |
C++, задача на бинарный файл (Бинарный файл состоит из записей по 5 бит) | zaitsevmishka | Помощь студентам | 3 | 16.05.2014 21:39 |
Бинарный файл | nXs | Общие вопросы Delphi | 4 | 26.03.2011 11:40 |
Бинарный файл | mchip | Microsoft Office Excel | 10 | 05.03.2009 19:10 |
Бинарный файл | Bayazet | Общие вопросы Delphi | 1 | 04.03.2009 16:39 |