2012-07-15 111 views
6
FMT fmt=new FMT();  

public void ReadFmtHeader() 
{ 
    fmt.s_Sub_Chunk_ID_1 = reader.ReadBytes(4); 
    fmt.ui_Sub_Chunk_Size_ID_1 = reader.ReadBytes(4); 
    fmt.us_Audio_Format = reader.ReadBytes(2); 
    fmt.us_Num_Channels = reader.ReadBytes(2); 
    fmt.ui_Sample_Rate = reader.ReadBytes(4); 
    fmt.ui_Byte_Rate = reader.ReadBytes(4); 
    fmt.us_Block_Align = reader.ReadBytes(2); 
    fmt.us_Bits_Per_Sample = reader.ReadBytes(2); 

    if (Convert.ToInt32(fmt.ui_Sub_Chunk_Size_ID_1) == 18)// Exception thrown on this line 
    { 
     // Read any extra values 
     int fmtExtraSize = reader.ReadInt16(); 
     reader.ReadBytes(fmtExtraSize); 
    } 
} 

我正在尝试读取波形文件,然后使用标题信息重新创建并保存到文件。 我不知道是什么问题。任何人都可以帮助我吗?无法投射'System.Byte []'类型的对象来键入'System.IConvertible'

回答

9

使用Convert.ToInt32不能将byte[]转换为int;你需要use a BitConverter

+1

那么BitConverter.ToInt32和Convert.ToInt32有什么区别? – 2012-07-15 12:03:04

+2

区别在于'BitConverter'是为了完成你想要做的事情而构建的:获取一组字节并将它们转换为它们的整体表示。 'Convert.Int32'用于转换已经是整数的任何东西,或者可以使用'IConvertible'接口转换为整数。 – 2012-07-15 21:17:37

相关问题