unsigned int的bitset等价物

时间:2017-01-11 19:05:33

标签: c++ visual-studio-2010

编写程序将ANSI编码的字符串转换为二进制。我的ANSI值是È。

以下是我这样做的方式:

 int ascii; //used to store ASCII number of a character

int length = strlen(input);
char letter = NULL;
for(int x=0;x<length;x++) //repeat until the input is read
{
    ascii = input[x];
    bitset<8> binary(ascii);
}

但是,因为ascii是int类型所以我得到的值是-56,当使用bitset找到它的二进制文件时,我得到00110011(这是字符È的错误二进制值) 。相反,我应该得到11001000的值(È的正确二进制)。我明白如果ascii类型是unsigned int,那么我将获得正确的二进制输出。但是,bitset不接受unsigned int类型;因此,是否有bitset的等价物可以接受unsighed int?或者还有其他方法可以进行二进制转换吗?

1 个答案:

答案 0 :(得分:0)

你有X-Y问题。

您应该使用 wide unicode 变量类型。

您正在寻找的std::bitset是:
std::bitset<sizeof(unsigned int) * CHAR_BIT>

sizeof(unsigned int)unsigned int中的字节数 CHAR_BIT是一个字节中的位数。