2012-06-20 13 views
12

एक बाइट सरणी को एक int सरणी में कैसे परिवर्तित करें? मेरे पास 144 आइटम रखने वाले बाइट सरणी हैं और मेरे अनुभवों के कारण मैंने अनुभव किया है कि मेरे अनुभवहीनता के कारण काफी अक्षम हैं। मुझे खेद है अगर इसका उत्तर पहले दिया गया है, लेकिन मुझे कहीं भी अच्छा जवाब नहीं मिला।एक बाइट सरणी को एक int सरणी में कैसे परिवर्तित करें?

+1

तरीकों से आप की कोशिश की है क्या हैं? – Marlon

+0

बस उल्लेख करने के लिए - बाइट 8 बिट है, int 32 बिट है, और आप एक बाइट को int में परिवर्तित कर रहे हैं। सभी परिवर्तित इनट्स 0 से 255 तक होंगे। – Bakudan

उत्तर

22

सरल:

//Where yourBytes is an initialized byte array. 
int[] bytesAsInts = yourBytes.Select(x => (int)x).ToArray(); 

सुनिश्चित करें कि आप एक का उपयोग कर घोषणा के साथ System.Linq में शामिल हैं:

using System.Linq; 

और अगर LINQ अपने बात नहीं है, तो आप इस के बजाय का उपयोग कर सकते हैं:

int[] bytesAsInts = Array.ConvertAll(yourBytes, c => (int)c); 
+0

मुझे एक त्रुटि मिली: 'बाइट []' में 'चयन' की परिभाषा नहीं है और 'एक्सटेंशन' प्रकार का पहला तर्क स्वीकार करने के लिए 'चयन' नहीं है 'बाइट []' पाया जा सकता है (क्या आप एक प्रयोग निर्देश या असेंबली संदर्भ खो रहे हैं?) – user1166981

+0

@ user1166981: अपने प्रोजेक्ट में 'System.Linq' को संदर्भित करना सुनिश्चित करें। (.NET ढांचे का कौन सा संस्करण आप लक्ष्यीकरण कर रहे हैं?) – Ryan

+0

ठीक है कि त्रुटि को हटा दिया गया है – user1166981

4

मुझे पता है कि यह एक पुरानी पोस्ट है, लेकिन यदि आप पूर्णांक पैक की सरणी पाने के लिए पहली जगह देख रहे थे एक बाइट सरणी में एड (और यह 144 तत्वों के अपने सरणी बाइट पर विचार किया जा सकता है), इस यह करने के लिए एक तरीका है:

var size = bytes.Count()/sizeof (int); 
var ints = new int[size]; 
for (var index = 0; index < size; index++) 
{ 
    ints[index] = BitConverter.ToInt32(bytes, index * sizeof (int)); 
} 

नोट: यदि आवश्यक हो तो endianness की देखभाल। (और सबसे मामले कहीं भी होगी में)

+0

नाइस, यह देख रहा था। लोग भूल जाते हैं कि (int) byteVar एक inttreray को int में परिवर्तित करने जैसा नहीं है (उदाहरण के लिए एक int के लिए 4 बाइट्स) – Sliver2009

+1

एक बेहतर समाधान है: https://stackoverflow.com/a/5896716/238419 सवाल 'int []' 'बाइट []' के बारे में है, लेकिन इस समाधान को ध्यान में रखना चाहिए –

0

अब यह सरल की तरह है इस प्रकार है,

int[] result = Array.ConvertAll(bytesArray, Convert.ToInt32); 
संबंधित मुद्दे