2012-07-15 11 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

आप byte[] को पर Convert.ToInt32 का उपयोग करके परिवर्तित नहीं कर सकते हैं; आपको use a BitConverter की आवश्यकता है।

+1

तो बिटकोनवर्टर.ToInt32 और Convert.ToInt32 के बीच क्या अंतर है? –

+2

अंतर यह है कि 'बिटकॉन्टर' को ठीक करने के लिए बनाया गया है जो आप करने की कोशिश कर रहे हैं: बाइट्स की एक सरणी लें और उन्हें अपने अभिन्न प्रतिनिधित्व में परिवर्तित करें। 'कन्वर्ट.इन्ट 32' का अर्थ किसी भी चीज को परिवर्तित करने के लिए है जो पहले से ही एक पूर्णांक है, या 'आईकोनवर्टिबल' इंटरफ़ेस का उपयोग करके एक पूर्णांक में परिवर्तित किया जा सकता है। –

संबंधित मुद्दे

 संबंधित मुद्दे