2

我需要编写一个名为 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)

这会更有意义,但仍然没有意义为什么我需要第一个无符号字符......

我应该如何编写函数的第一行?

4

1 回答 1

0

参数不是您的问题,而是您的函数声明。您向函数声明了两种返回类型

string unsigned char bitstring(unsigned char val)

该函数返回一个字符串...等待不...一个无符号字符...您只需要定义一个返回类型,例如省略字符串。你想要完成的是一个无符号字符数组,因此需要字符返回一个指向字符的指针。

void bitstring(unsigned char val, unsigned char* array) //write to array
  • 请注意,尽管返回数组是一种不好的做法并且通常会失败,但如果您在函数中分配数组并返回对它的引用,则引用将失败,因为数组将在函数结束时解构。更好的解决方案是将要读取的数组作为参数传递给函数,然后写入该数组。
于 2012-12-13T05:50:52.020 回答