Konvertierung von intger Arry zu unsigned char Arry

Gast #2593005
Lesenswert?

hallo zusammen,

ich habe hier ein Problem,eine intger Array in unsigned char zu
konvertieren. der kompiler meldet keine
fehler aber die  char arry  bleibt  immer leer.
ich hab erstmal versucht,einen unsigned char pointer auf den int pointer 
zeigen lassen und dann die werte Byte zu Byte in char Array zu kopieren 
aber die Casting funktioniert nicht richtig.
hier ist mein Code:
1
        int samples   = 100;
2
        int bitrange   = 16;
3

4
        int  val  = 0;
5
        int* pVal = 0;
6
        unsigned char  byte  = 0;
7
        unsigned char* pByte = 0;
8
        
9
        int *intBuf            = new  int[samples]; 
10
        unsigned char *charBuf = new unsigned char[samples*bitrange/8]; 
11
          int i,x,j;
12
           for(i=0,x=0;i<samples;i++)
13
       {      int y=pow(2,bitrange)-1;
14
                  intBuf[i]=(int)y*sin(i*2*3.14/samples);
15
                       
16
                  val = intBuf[i]; 
17
                  pVal = &val; 
18
          //einen unsigned char pointer auf den int pointer zeigen lassen
19
                  pByte = reinterpret_cast<unsigned char*>(pVal);     
20
                //std::cout<<"charByte="<<*pByte<<""<<"pval="<<*pVal<<std::endl;
21
                  // das byte im buffer speichern            
22
               for(j=0; j<(int)bitrange/8; j++, pByte++)      
23
                    {  // das byte im char buffer speichern
24
                        charBuf[x] = *pByte;               
25
             
26
        std::cout<<"x="<<x <<"charbuf="<<charBuf[x]<<""<<"intBuf="<< intBuf[i]<<std::endl;
27
                   x++;
28
                   }
29
 
30
            }
31

32
          delete [] intBuf;          
33
          delete [] charBuf;
34
 return 0;
hier ist Teil der Ausgabe
1
x=0charbuf=intBuf=0
2
x=1charbuf=intBuf=0
3
charByte=pval=4112
4
x=2charbuf=intBuf=4112
5
x=3charbuf=intBuf=4112
6
charByte=pval=8209
7
x=4charbuf=intBuf=8209
8
x=5charbuf= intBuf=8209

ich hoffe dass, jemand mir weiterhelfen kann.
danke schönmal im voraus.
Gruß
Salima
#2593054
Lesenswert?

Selima schrieb:
> ich habe hier ein Problem,eine intger Array in unsigned char zu
> konvertieren.

Also jedes int aus dem Quell-Array in ein unsigned char im Ziel-Array? 
Danach klingt diese Aussage, aber der Code scheint etwas anderes zu 
versuchen, und das hier:

> ich hab erstmal versucht,einen unsigned char pointer auf den int pointer
> zeigen lassen und dann die werte Byte zu Byte in char Array zu kopieren

läßt auch Fragen offen, was du denn nun genau willst. In deinem Code ist 
bitrange 16, aber wenn du nicht gerade unter DOS oder so programmierst, 
ist int normalerweise 32 Bit breit. Willst du von jedem int nur die 
Hälfte nehmen und davon wiederum die obere und untere Hälfte jeweils in 
einem unsigned char speichern?

> aber die Casting funktioniert nicht richtig.

Was heißt "funktioniert nicht richtig"?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren