में बाइट्स को इंट/यूंट में कनवर्ट करें मेरे पास एक हस्ताक्षरित चार सरणी है [248]; बाइट से भरा 2 एफ एएफ एफएफ 00 ईबी एबी सीडी ईएफ की तरह ..... यह ऐरे मेरा बाइट स्ट्रीम है जिसे मैं अपने डेटा को यूएआरटी (आरएस 232) से एक बफर के रूप में संग्रहीत करता हूं।सी
अब मैं बाइट्स को अपने uint16 और int32 के रूप में परिवर्तित करना चाहता हूं।
सी # में मैंने बिटकॉन्टर क्लास का ऐसा करने के लिए उपयोग किया। उदाहरण:
byte[] Array = { 0A, AB, CD, 25 };
int myint1 = BitConverter.ToInt32(bytes, 0);
int myint2 = BitConverter.ToInt32(bytes, 4);
int myint3 = BitConverter.ToInt32(bytes, 8);
int myint4 = BitConverter.ToInt32(bytes, 12);
//...
enter code here
Console.WriteLine("int: {0}", myint1); //output Data...
क्या सी में एक समान कार्य है? (कोई .net, मैं Keil संकलक का प्रयोग कर एक माइक्रोकंट्रोलर पर क्योंकि कोड चल रहा है)
सादर सैम
समाधान: रास्ता ए)
पहले मैं बदल सकते हैं या के रूप में सरणी प्रारंभ करने के लिए किया था एक uint8_t ARRAY [248];
uint32_t* myint1 = (uint32_t *)&RXBUFF[2]; //test
uint16_t* myint2 = (uint16_t *)&RXBUFF[6]; //test3
ध्यान दें:: पूर्णांक मूल्य "1985" हेक्स में myint2 में 0x07C1 के रूप में प्रस्तुत किया जाता है तो मैं आपकी मदद के साथ इस कोड का इस्तेमाल किया। बाइट जिसे मैंने भेजा था "सी 1 07" था इसलिए माइक्रोकंट्रोलर बाइट ऑर्डर
बदल रहा है, मैं अन्य तरीकों का भी परीक्षण करूंगा।
WR सैम :)
क्या होगा यदि इसका बड़ा एंडियन? – Sam
तो आप सबसे महत्वपूर्ण बिट्स के बजाय कम से कम महत्वपूर्ण बिट्स में स्थानांतरित करते हैं। – devsnd
@twall, मुझे लगता है कि आप बाइट्स का मतलब है। –