作者Mewra ()
看板C_and_CPP
标题[问题] 不同型别的大小配置
时间Wed Mar 11 11:02:40 2009
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)