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