编写一个程序,将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
?或者有其他方法可以进行二进制转换吗?
您有一个X-Y问题。
您应该使用wide或unicode变量类型。
您要查找的std::bitset
是:std::bitset<sizeof(unsigned int) * CHAR_BIT>
。
CCD_ 11是CCD_ 12中的字节数CHAR_BIT
是一个字节中的位数。