2012-12-13 75 views
2

我需要编写一个名为比特串函数,该函数是在这个函数创建一个无符号字符:使用无符号的字符和字符串函数声明

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

你在第二个函数中声明了两个返回类型? –

+0

那么我想返回的是一串以“01010101 10100011 10110000”为例的返回语句 –

回答

0

参数不是你的问题,它会是你的函数声明。声明两个返回类型

string unsigned char bitstring(unsigned char val) 

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

void bitstring(unsigned char val, unsigned char* array) //write to array 
  • 不过,请注意返回数组是一个不好的做法,一般失败,如果分配的功能数组,并返回到它的提述将失败,因为该阵列将在一月底解构功能。更好的解决方案是将想要读取的数组作为参数传递给函数,然后写入THAT数组。
+0

非常感谢! –

+0

如果我有一个数组说:string temp = [“106”,“128”,“88”];我通过你给我的函数来运行它:bitstring(temp [i],temp);通过运行3次的for循环遍历整个数组,它会将我的临时函数更改为类似temp = [“01101010”等的内容)? –

+0

如果您需要额外的帮助,请给我发电子邮件,我会进一步帮助您。 –