看板 C_and_CPP 關於我們 聯絡資訊
Hi, 日前有一個wav檔, 我將其header資訊都拿掉留下data部份 : FILE *fp = fopen( "1.wav", "rb" ); BYTE A[4]; DWORD B; short int C; long int D; char* E; char* F; 依序將header資訊讀進A,B,C,D內, 原本該有12個資訊,不過會太長故只列出4個. fread( A, sizeof( BYTE ), 4, fp ); fread( &B, sizeof( DWORD ), 1, fp ); fread( &C, sizeof( short ), 1, fp ); fread( &D, sizeof( long ), 1, fp ); E = (char *)malloc( length of E ); E是剩餘的部份, 也就是data部份. F = (char *)malloc( 4+1+1+1+length of E ); 這時若想將A,B,C,D,E照原來順序裝進F內, 也就是全部轉換成char後裝進去, 則BYTE,DWORD,short int,long int這些型態轉成char後會跟原本header資訊一樣嗎? for( int i = 0 ; i < 4; i++ ) F[i] = (char)A[i]; F[4] = (char)B; // 這不知道該怎麼轉 F[5] = (char)C; // short int 轉 char, 或該用itoa轉成2進位? F[6] = (char)D; // long int 轉 char, 或該用ltoa轉2進位? for( int i = 0 ; i < length of E ; i++ ) F[7+i] = E[i]; 如果將F存成另一個2.wav檔,檔案大小會跟原本1.wav一樣嗎? 還有DWORD B是32bits的,也就是4bytes,但是在fread時只要讀進一個元素, BYTE A[4]也是4bytes,但是fread時要讀進四個元素,這樣我轉成char寫到 F內,A跟B的大小不會有問題嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.110.117.10 ※ 編輯: Mewra 來自: 140.110.117.10 (03/11 11:08) ※ 編輯: Mewra 來自: 140.110.117.10 (03/11 11:39) ※ 編輯: Mewra 來自: 140.110.117.10 (03/11 11:45)