从int到char数组

时间:2017-11-18 20:22:39

标签: c++ arrays

char ToByte(bool b[8])
{
    char c = 0;
    int j = 0;
    for (int i = 7; i >= 0; i--) {
        if (b[j]) {
            c |= 1 << i;
        }
        j++;
    }
    return c;
}

此函数从bool转换为char

   int main() {
        int number = 979899101;

        bitset<32> byte4= number;
        cout << byte4 << endl;;
        bitset<8> byte;
        char op[4];
        for (int i = 3; i >= 0; i--) { 
            for (int j = 0; j < 8; ++j)
                byte[j] = byte4[i * 8 + j];
            cout << byte;

            bool var[8];
            for (int j = 0; j < 7; ++j)
                var[j] = byte[j];

            op[i]=ToByte(var);
        }   
        cout << op; 
    }

我正试图将整数转换为char数组,但结果不好。喜欢╗I↨]╠╠╠╠╠╠╠╠Ţ我不知道我做错了什么。

1 个答案:

答案 0 :(得分:0)

将bool数组转换为char的函数可以正常工作。

试试这个:

bool a[] = {0, 1, 1, 0, 0, 0, 0, 1}; //97
bool b[] = {0, 1, 1, 0, 0, 0, 1, 0}; //98
bool c[] = {0, 1, 1, 0, 0, 0, 1, 1}; //99
bool d[] = {0, 1, 1, 0, 0, 1, 0, 0}; //100
cout << ToByte(a) << ToByte(b) << ToByte(c) << ToByte(d) << endl;

所以你需要决定如何将大数字(979899101)分成几部分(bitset<8> byte),因为main()中的代码不符合你的预期。

它将长号00111010011010000001001011011101拆分为58(00111010),104(01101000),18(00010010)和221(11011101)< / p>

关闭主题:抱歉我的英语不好,这不是我的母语。