У меня есть проект для передачи звуковой волны для связи с ПК.
Первый шаг состоит в том, что вход представляет собой строку двоичных файлов переменной длины (длина может быть 128 бит / цифр или 256 бит / цифр,до тех пор, пока количество цифр делится на 4), и эта длина вставляется в вектор, а каждый вектор содержит полубайт или 4 бита, поэтому я могу преобразовать его в шестнадцатеричный и затем использовать его, чтобы определить, какой тон DTMF он должен передать,
Я написал код в классе, где функция вектора расщепления цифр называется std :: vector splitbit ();
Причина, по которой я вызвал short int, потому что мое приложение не хочетзанять слишком много места.
Я пробовал с набором битов, но он работает только с постоянным числом. Если я использовал vector, он может работать, но код будет слишком длинным и тратить много ресурсов.
Входные данные записываются в unsigned long long int, но целое число может принимать только 20 цифр (2 ^ 64)
Это код заголовка:
#pragma once
#include "stdafx.h"
class dtmf
{
private:
unsigned int decimal,remainder,power;
unsigned long long int bit;
std::vector<std::vector<unsigned short>> dtmffreq;
std::vector<unsigned short>selectfreq[16], index, bitsplit;
// std::vector<unsigned unsigned long long int> bitlen[128];
public:
dtmf();
void inifreq();
void printfreq();
void bitinput();
std::vector<unsigned short> getfreq();
std::vector<unsigned short int> splitbit();
unsigned int bit2dec();
};
Это функция ввода:
void dtmf::bitinput()
{
std::cin >> bit;
}
std::vector<unsigned short int> dtmf::splitbit()
{
for (size_t i = 0; i < 4; i++)
{
bitsplit.push_back((bit/=10)%10);
}
return bitsplit;
}
Когда я отлаживаю систему, вывод только бит-сплитдает по одному биту за раз, как если бы я записал 1101, вывод будет {1,1,0,1}, а если я напишу 11000110, я получу {1,1,0,0,0,1,1,0}(если я изменю i на 8), а не {1100,0110}.