Chcę napisać tablicę zawierającą liczby całkowite 16bit jak surowego binarnego do pliku i nie próbował z poniższym przykładzie:dane Suwnice pisząc do binarnego pliku
# define __int8_t_defined
__intN_t (8, __QI__);
__intN_t (16, __HI__);
__intN_t (32, __SI__);
__intN_t (64, __DI__);
int main(int argc, char *argv[])
{
FILE * rawf;
rawf = fopen("./rawPcm","wb");
int16_t buff[] = {0,0,0};
fwrite(buff,sizeof(int16_t), sizeof(buff),rawf);
fwrite(buff,sizeof(int16_t), sizeof(buff),rawf);
fclose(rawf);
}
Jednak wyjście zawiera więcej niż tylko zer .
$ hexdump -v rawPcm
0000000 0000 0000 0000 85fd 0804 0001 0000 0000
0000010 0000 85fd 0804 0001
0000018
pisze on 0000 0000 0000 85fd 0804 0001
dla każdego fwrite(buff,sizeof(int16_t), sizeof(buff),rawf);
podczas Spodziewam się dostać tylko 0000 0000 0000
.
Co dodatkowe dane reprezentują 85fd 0804 0001
i jak mogę temu zapobiec?
(Prawie) minimalny i kompletny przykład, zaobserwowany wynik, oczekiwany wynik. Pan, proszę pana, zasługuje na medal. :-D – DevSolar
Dobre stare przepełnienie bufora :) – Luaan