将二进制转换为十六进制:仅在2-7上出错

1 c++ binary calculator

我正在使用基本的switch-case语句将4digit二进制转换为单个数字十六进制,并且由于某种原因代码将不会为数字0010-0111运行,我不知道为什么.

这是我有的:

void BinHex() {
        int binin;
        cout << "Enter Binary(####): " << endl;
        cin >> binin;

        switch(binin){
                case 0000: cout << "Hex: 0" << endl; break;
                case 0001: cout << "Hex: 1" << endl; break;
                case 0010: cout << "Hex: 2" << endl; break;
                ...
        }
}
Run Code Online (Sandbox Code Playgroud)

所有数字0,1,8-15都可以正常工作,但中间数字却没有.关于什么可能导致这个错误输出/不运行的任何想法?

Bar*_*rry 5

这个案例:

case 0010: cout<<"Hex: 2\n"; break;
Run Code Online (Sandbox Code Playgroud)

不会开火binin == 10.它会开火binin == 8,因为0010八进制文字.只需删除前导0s,以便将值解释为十进制文字.