[Tech] Domanda di C

Valerio Montagnani tech@vmontagnani.it
Mer 26 Maggio 2004 16:45:38 CEST


On Wed, 26 May 2004 16:20:56 +0200 (CEST)
Franco Bagnoli <bagnoli@dma.unifi.it> wrote:

> 
> Credo che con una union con una struttura (esempio da manuale) possa 
> farcela:
> 
> union {
>  unsigned little-endian;
>  struct {
>   unsigned char low;
>   unsigned char high;
>  } data;
> } x;
> 
> x=<dato>
> y = x.data.low | (x.data.high<<8);
> (qualche operazione su y)
> ecc. ecc. 
> 

Esempio da manuale? Hai trovato questo su un manuale di riferimento? Potresti darmi il titolo? Grazie.

> puoi anche usare due strutture, se vuoi evitare di shiftare i bit, oppure 
> fare tutto con gli shift. 
> 
> per amplificare puoi anche convertire il numero in double, moltiplicarlo e 
> manipolarlo in maniera appropriata usando funzioni tipo arrcotangente 
> iperbolica per mantenerlo nel range giusto, ma non so quanti dati devi 
> trattare. 

Sono vettori di 1920000 campioni di tipo signed char.

L'idea è quella di creare qualcosa di simile alla funzione di Audacity che normalizza e amplifica una sequenza audio.


-- 
Valerio Montagnani        (Lug-Account)        <tech@vmontagnani.it>
              pub 1024/C7E4BC57    sub 2048g/0E170155
Key fingerprint = D5A4 EDFC 060C 5BD6 E2DD  8252 3B67 C1EB C7E4 BC57



Maggiori informazioni sulla lista flug-tech