2012-04-26 16 views
6

मैं एक पूर्णांक सरणी विज्ञापन के लिए एक बाइट सरणी परिवर्तित करने के लिए तो एक पूर्णांक सरणी के लिए वापस बाइट सरणी परिवर्तित कोशिश कर रहा हूँ।त्रुटि

बाइट सरणी से परिवर्तित सरणी मैं इस कोड का इस्तेमाल किया int करने के लिए:

int[] iArray = new int[someSize]; 
byte[] bArray = new byte[iArray.Length * sizeof(int)]; 
Buffer.BlockCopy(iArray, 0,bArray, 0, bArray.Length); // This code works correctly. 

लेकिन जब पूर्णांक सरणी में करने के लिए बाइट सरणी से परिवर्तित, iArray2 सरणी में मानों झूठा हो जाता है जब iArray में मूल्य सरणी 256 से भी बड़ा है (हो यह अतिप्रवाह है, मैं नहीं जानता कि हो सकता है।)

// What is the error in this code?. 
int iArray2 = new int[someSize]; 
Buffer.BlockCopy(bArray, 0, iArray2, 0, iArray2.Length); 

मैं कैसे बाइट सरणी से परिवर्तित कर सकते हैं सही ढंग से सरणी int करने के लिए?

+2

एक बाइट भंडार मूल्यों आप जब की, कहते हैं, 1000 एक पूर्णांक मान से परिवर्तित जिसके परिणामस्वरूप बाइट के लिए उम्मीद करेंगे? –

उत्तर

7

Buffer.BlockCopy हमेशा बाइट में, सरणी इकाइयों में नहीं है।

इसलिए, जब आप दूसरे BlockCopy() कॉल में iArray2.Length गुजरती हैं, आप कॉपी कर रहे हैं कि कई बाइट्स है, जो अपने वास्तविक सरणी के एक चौथाई है। 255 क्या मूल्य 0 से

+0

ठीक है धन्यवाद, मैं बाइट सरणी से int सरणी में कैसे परिवर्तित कर सकता हूं? – HforHisham

+0

@HeshamAbouelsoaod: बाइट्स में सही लंबाई ** गुजर ** करके। – SLaks

+0

ठीक है यह काम करता है, धन्यवाद। – HforHisham