Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
REDMI Note 17 Pro porta in fascia media una batteria da 8.340 mAh con ricarica HyperCharge a 67W, un display AMOLED da 6,83 pollici capace di picchi di luminosità molto elevati e una struttura certificata TÜV SÜD contro cadute e infiltrazioni d'acqua, il tutto racchiuso in una scocca da 223 grammi. Lo abbiamo provato per diversi giorni tra fotocamera, prestazioni, autonomia e prezzo sul mercato italiano
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra integra un sensore da 1 pollice 8K, ottiche Leica e triplo chip IA. Tra schermo OLED rimovibile, workflow I-Log a 10 bit e stabilizzazione a tre assi, analizziamo le doti tecniche di una gimbal camera pensata per i professionisti
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 14-04-2012, 15:47   #1
potenzio
Junior Member
 
Iscritto dal: Apr 2012
Messaggi: 1
[C] Creazione di un buffer

Salve a tutti, premetto che non ho molta esperienza nel programmare in C ( ho studiato un po' di C++ e Java); devo implementare un buffer per le operazioni di I/O a livello di bit, e non ho la piu' pallida idea di come fare, anche perche' mi e' stato chiesto di utilizzare per le operazioni di lettura e scrittura una maschera. Vi posto anche il codice che mi e' stato dato. Potete aiutarmi o darmi qualche spiegazione sul codice?? Grazie mille.
Codice:
#define BITBUF_SIZE 4096
// dimensione del buffer in bit
#define BITBUF_SIZE_IN_BITS (BITBUF_SIZE * 8)

typedef struct
{
   int POS   ;
   int LEN;
   int mode; // 0 = READ; 1 = WRITE
   int FD;
   u_int8_t BUF[BITBUF_SIZE];
}BITFILE;

BITFILE* bitfile_open(char* filename,int mode)
{
   int fd;
   BITFILE* p;
   if(mode!=0 && mode !=1)
   {
      return NULL;
   }
   fd=open(filename,(mode==0?O_RDONLY:O_WRONLY),0644);
   if(fd<0)
   {
      printf("fail \n");
      return NULL;
   }
   p=calloc(1,sizeof(BITFILE));
   if(p==NULL)
   {
      close(fd);
      printf("fail");
      return NULL;
   }
   p->FD=fd;
   p->mode=mode;
   return p;
}

int bitfile_read(BITFILE* bfp,u_int64_t* dst,int nbits)
{
   return(0);
}

int bitfile_write(BITFILE* P,u_int64_t D,int LEN)
{
   u_int8_t mask;
   mask &=(u_int8_t)0;
   int OFS,K,RES,LEN2;
   LEN2=LEN;
   while(LEN2>0)
   {
      OFS=P->POS/8;
      K=P->POS%8;
      RES=8-K;
      if(LEN2<RES)
         RES=LEN;
      mask=(1<<RES)-1;
      P->BUF[OFS]&=(1<<K)-1;
      P->BUF[OFS]|=(D & mask)<<K;
      LEN2=LEN2-RES;
      P->POS+=RES;
      D>>=RES;
      if(P->POS >= BITBUF_SIZE_IN_BITS)
      {
         safe_write(P->FD,P->BUF,BITBUF_SIZE);
         P->POS=0;
      }
   }
return LEN;
}

int bitfile_close(BITFILE* P)
{
   int OFS,K;
   OFS=P->POS/8;
   K=P->POS%8;
   safe_write(P->FD,P->BUF,OFS);
   close(P->FD);
   bzero(P,sizeof(BITFILE)); //Azzeramento prima della chiusura
   free(P);
   return(0);
}
potenzio è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce Recensione REDMI Note 17 Pro: il midrange con ba...
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema Insta360 Luna Ultra: la potenza del sensore da 1...
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
La Camera USA presenta il conto: i data ...
Non solo EV, ma anche IA: Panasonic inau...
iPhone Duo, il debutto del pieghevole di...
Atlas 960E SuperPoD, la risposta di Huaw...
IA militare e nucleare: esperti USA e ci...
Dieci mini-reattori nucleari in Europa d...
CONTROL Resonant su PC: Path Tracing, Ra...
ColorOS 17 arriva su circa 90 dispositiv...
GTA VI, il multiplayer potrebbe debuttar...
Aggiornamento KB5002914 rompe Excel: ecc...
Processo Huawei a Brooklyn: l'FBI mostra...
WhatsApp introduce nuovi temi per le cha...
NVIDIA, Google e Emerald AI uniscono le ...
iPhone 18 Pro Max, il test sulla vapor c...
Fine estate in giardino: le proposte sco...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 03:41.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v