от int до char

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↨] ╠╠╠╠╠╠╠╠Ţ Я не знаю, что я делаю неправильно.

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)

не по теме: извините за мой ломаный английский, это не мой родной язык.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector