#c #variables #bit
#c #переменные #бит
Вопрос:
я перенес элементы массива в printf ту строку / биты, которые мне нужно перенести в некоторую переменную, потому что мне нужно затем поработать с этим текстом / строкой (01000001 ) и преобразовать его в char (bits => char).
//main
bool bits2[8] = {0,1,0,0,0,0,0,1};
printf("%cn", decode_byte(bits2));
//function
char decode_byte(const bool bits[8]){
int i;
for (i=0; i<8; i ){
printf("%d", bits[i]);
}
return 0;
}
Комментарии:
1. Неясно, о чем вы спрашиваете. Какой результат вы хотите получить?
2. Вы хотите вернуть ‘A’, когда ваша функция декодирует {01000001}?
3. @Fawad да, я имею в виду, что .. Функция, которая возвращает ‘A’ из моего printf в консоли или из массива {01000001}
Ответ №1:
decode_byte
следует просто преобразовать из двоичного представления в фактическое целое число:
#include <stdbool.h>
#include <stdio.h>
char decode_byte(const bool bits[8]) {
unsigned char c = 0;
for (int i = 0; i < 8; i ) {
c = (c << 1) | bits2[i];
}
return c;
}
int main() {
bool bits2[8] = { 0, 1, 0, 0, 0, 0, 0, 1 };
printf("%cn", decode_byte(bits2));
return 0;
}
Программа должна выводить A
, который является символом ASCII, закодированным как 65
, двоичное представление которого 01000001
.
Ответ №2:
Вы ищете это?
#include <stdio.h>
int main() {
bool bits2[8] = { 0,1,0,0,0,0,0,1 };
unsigned char c = 0;
for (int i = 0; i < 8; i )
{
c <<= 1;
c |= bits2[i];
}
printf("xn", c);
}
Ответ №3:
//function
char decode_byte(const bool bits[8]){
int sum = 0;
for(int i=0;i<8;i ){
sum = (1<<i)*bits[7-i];
}
return (char)sum;
}
Прочитайте о таблице ascii. Когда сумма равна 65, ее преобразованное значение типа в таблице ascii равно ‘A’