Enviado em 26/03/2017 - 11:01h
Olá!Enviado em 26/03/2017 - 22:47h
Certamente dá para fazer, mas não diretamente com tipos nativos, pois, por definição, char é a menor unidade cujo endereço pode ser diretamente manipulado e também por definição, ela tem de ter tamanho mínimo de oito bits.Enviado em 27/03/2017 - 06:08h
Dá para fazer mas para quem não consegue enxergar a coisa é enrolado.Enviado em 28/03/2017 - 16:40h
Olá,char byte; fread(&byte, 1, sizeof byte, fp);
char byte[5]; fread(byte, 5, sizeof byte, fp);
/* bit.c * gcc -o bit bit.c -Wall * * (C) 2017 - Enzo Ferber, <enzoferber@gmail.com> */ #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> typedef unsigned char byte; void print_bin(byte n) { byte i; printf("%d: ", n); for(i = 128; i > 0; i >>= 1) printf("%c", !!(n & i) + '0'); putchar('\n'); } int main(int argc, char *argv[]) { int i; byte data[5]; FILE *fp = fopen("file", "rb"); /* file e um arquivo texto com o conteudo: * * ABCDE * */ fread(data, 5, sizeof(byte), fp); /* mostra que tudo esta ok com a leitura */ for(i = 0; i < 5; i++) print_bin(data[i]); /* 5 bits no primeiro byte * * 1111 1000 = 0xf8 */ byte un1 = (data[0] & 0xf8) >> 3; print_bin(un1); /* 3 bits no primeiro, 2 bits no segundo: * * byte1 byte2 * --------- --------- * 0000 0111 1100 0000 * * 0x07 0xc0 */ byte un2 = ((data[0] & 0x07) << 2) | ((data[1] & 0xc0) >> 6); print_bin(un2); /* 5 bits no byte 2 * * 0011 1110 * * 0x3e */ byte un3 = ((data[1] & 0x3e) >> 1); print_bin(un3); /* 1 bit no segundo, 4 bits no terceiro * * byte 2 byte 3 * -------- --------- * 0000 0001 1111 0000 * * 0x01 0xf0 */ byte un4 = ((data[1] & 0x01) << 4) | ((data[2] & 0xf0) >> 4); print_bin(un4); return 0; } /* EoF */
ABCDE
$ indent -kr -i8 src.c "(...)all right-thinking people know that (a) K&R are _right_ and (b) K&R are right." - linux/Documentation/CodingStyle - TORVALDS, Linus.
Criar entrada (menuentry) ISO no Grub
Como gerar qualquer emoji ou símbolo unicode a partir do seu teclado
Instalar o VIM 9.1 no Debian 12
Como saber o range de um IP público?
Muitas dificuldades ao instalar distro Linux em Notebook Sony Vaio PCG-6131L (VPCEA24FM)
Slackpkg+ (Slackpkg Plus) está de volta!
Como dividir duas janelas igualmente e lado-a-lado na sua tela
Instalação do programa IRPF 2025 - Dificuldade (12)
Duvida em tunel de ligação VPN (2)