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↨]╠╠╠╠╠╠╠╠Ţ我不知道我做错了什么。
答案 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>
关闭主题:抱歉我的英语不好,这不是我的母语。