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