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;
}
Я пытаюсь получить преобразование из целого числа в массив символов, но получаю плохой результат. как ╗I↨] ╠╠╠╠╠╠╠╠Ţ Я не знаю, что я делаю неправильно.
Ваша функция, которая конвертирует массив 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
)
не по теме: извините за мой ломаный английский, это не мой родной язык.
Других решений пока нет …