2012-07-15 15 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); 
    } 
} 

Bir dalga dosyası okumaya çalışıyorum ve daha sonra başlık bilgilerini kullanarak yeniden oluşturun ve dosyaya kaydedin. Sorun nedir bilmiyorum. Bana yardım eden var mı?'System.IConvertible' türünü yazmak için 'System.Byte []' nesnesine dönüştürülemiyor

cevap

9

byte[]'u Convert.ToInt32 kullanarak int'a dönüştüremezsiniz; use a BitConverter'a ihtiyacınız var.

+1

BitConverter.ToInt32 ve Convert.ToInt32 arasındaki fark nedir? –

+2

Fark, "BitConverter" in tam olarak yapmaya çalıştığınız şeyi yapmak üzere oluşturulmuş olmasıdır: bir bayt dizisi almak ve bunları bütünleşik gösterimlerine dönüştürmek. 'Convert.Int32', zaten bir tamsayı olan veya' IConvertible' arabirimini kullanarak bir tam sayıya dönüştürülebilen bir şeyi dönüştürmek içindir. –

İlgili konular