используя unsigned char и string в качестве объявлений функций

Мне необходимо написать функцию с именем bitstring, которая принимает символ без знака, созданный в этой функции:

size_t bs2n(string s)
{
assert (s.size() > 0);
if (s.size() == 1)
return s[0]-'0';
else {
string smaller = s.substr(0,s.size()-1);
return 2 * bs2n(smaller) + s[s.size()-1] - '0';
}
}

Эта функция занимает 8 бит и возвращает неподписанный символ в диапазоне 0-255

Мне нужно иметь возможность преобразовать его обратно, но я столкнулся с проблемой при записи параметров функции и первой строки из класса.

Что у меня есть:

string unsignedchar bitstring(unsigned char)

Я думаю, для одного это должно быть:

string unsigned char bitstring(unsigned char val)

что было бы чертовски больше смысла, но все равно не имеет смысла, зачем мне нужен первый беззнаковый символ …

Как мне написать первую строку функции?

2

Решение

Параметры не ваша проблема, это было бы объявление вашей функции. Вы объявляете два типа возврата в функцию

string unsigned char bitstring(unsigned char val)

Функция возвращает строку … подождите нет … беззнаковый символ … вам нужно определить только один тип возврата, например, пропустите строку. то, что вы хотите выполнить, — это массив неподписанных символов, поэтому требуется, чтобы символ возвращал указатель на символы.

void bitstring(unsigned char val, unsigned char* array) //write to array
  • Обратите внимание, что возврат массивов является плохой практикой и обычно дает сбой, если вы выделите массив в функции и вернете ссылку на него, ссылка потерпит неудачу, потому что массив будет деконструирован в конце функции. Лучшим решением было бы передать массив, в который вы хотите прочитать, в качестве параметра функции, а затем записать в этот массив.
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]