Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.80
Bug31
Заблокирован
#1

Как объединить пару байт в слово? (Загрузка WAV, Big Endian) - C++

31.07.2013, 21:02. Просмотров 2367. Ответов 1
Метки нет (Все метки)

Привет! Есть звуковой файл с 16-и битными амплитудами. Да не суть. После открытия файла и чтения всяких заголовков, остаются чистые RAW данные, тоесть байты. Исходя из того, что файл у нас 16-и битный, в этих данных идут нужные мне амплитуда (просто значения) по два байта на каждую. Тоесть идёт последовательность байт: 0,1,2,3,4,5,6,7....и тд здесь первое значение хранится в первых двух байтах, тоесть в 0 и 1, второе в 2 и 3 и тд...
Поскольку в простейшем случае можно считывать данные по байтно, возникает вопрос, как два считанный байта (short) объединить в одно слово (int) ?
Можно конечно же считывать сразу интом, но дело в том, что данные могут идти в разных как бы комбинациях, тоесть Big Endian и Little Endian... тоесть в прямом и обратном порядке, в одном INT сработает, а в другом - нет. Хотелось бы узнать, как просто напросто два short объединить в один int ?
P.S.: В WinApi есть всякие WORD, DWORD, HIBYTE, LOBYTE и пр... Но хотелось бы обойтись без WinAPI ...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.07.2013, 21:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как объединить пару байт в слово? (Загрузка WAV, Big Endian) (C++):

Порядок байт в big-endian и little-endian - C++
Всем привет! Народ подскажите мне пожалуйста простые прописные истины, а то я что то запутался! Предположим что у нас в байте 8 - бит и...

Как проще всего работать с Big-Endian C++ ? - C++
С++. Как проще всего работать с Big-Endian, используя стандартные операции ?

Из little endian в big endian - C++
Есть 256-битное 16-ричное число: 54 68 69 73 20 69 73 20 6D 65 73 73 61 67 65 2C 20 6C 65 6E 67 74 68 3D 33 32 20 62 79 74 65 73 Как...

Big-endian тестирование - C++
Есть программа, которая должна работать на little и big endian одинаково. В ней куча всяких "ifdef". С помощью какого ПО для виртуализации...

Объединить массив байт в целое число в с++ - C++
Привет! Нужно сдвинуть биты в каждом байте циклически вправо на случайное число N из диапазона 0..7 Разбить целое число на байты не...

Чтение 16-и битных слов из бинарника (загрузка Wav) - C++
Привет! Загружаю WAV. Данные в файле для формата звуковых данных с дискретностью 16 бит монофонического сигнала хранятся в массиве...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
31.07.2013, 21:49 #2
записать по-битого один short int в два char тут есть и то что вам нужно
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.07.2013, 21:49
Привет! Вот еще темы с ответами:

Устройство, использующее big endian, записало число из 4 байт в файл (записав напрямую байты) - Информатика
Устройство, использующее big endian, записало число из 4 байт в файл (записав напрямую байты, а не представление числа в 10-чной системе...

Устройство, использующее big endian, записало число из 4 байт в файл (записав напрямую байты) - Информатика
Устройство, использующее big endian, записало число из 4 байт в файл (записав напрямую байты, а не представление числа в 10-чной системе...

BitConverter little-endian -> big-endian - C#
Копирую в массив byte некоторые значения byte msg = new byte; Array.Copy(BitConverter.GetBytes(STX), 0, msg, 0, sizeof(int)); ...

Как считывать бинарные данные из файла с big-endian порядком? - Visual Basic .NET
Как считать данный из bin файла в котором данные(байты) записаны от старшего к младшему(т.е. в big-endian) сейчас я использую такой код...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru