2012-12-02 7 views
7

का उपयोग करके पूर्णांक संग्रहीत करना पूर्णांक का प्रतिनिधित्व करने के लिए 4 बाइट्स लेता है। मैं को QByteArray में कैसे स्टोर कर सकता हूं ताकि इसमें केवल 4 बाइट्स लगे?QByteArray को केवल 4 बाइट्स

  • QByteArray::number(..) इस प्रकार स्ट्रिंग के पूर्णांक को 4 बाइट्स लेते हुए परिवर्तित करता है।
  • QByteArray((const char*)&myInteger,sizeof(int)) भी काम नहीं कर रहा है।
+0

असल में, ते दूसरा समाधान काम करता है :) आपको बस इसे ठीक से वापस करने की आवश्यकता है। एक उत्तर पोस्ट करेगा जब टाइमर इसे दूसरों की मदद करने की अनुमति देगा (मैं हर जगह इस सवाल का बहुत कुछ देख रहा हूं, कहीं भी ठीक तरह से हल नहीं किया गया :) :) –

+0

मुझे पता है कि यह पुराना है, लेकिन आपका क्या मतलब है ' इसे ठीक से कास्ट करें? मैं इसे पिछले 2 घंटों के लिए ठीक से डालने की कोशिश कर रहा हूं ..: डी –

उत्तर

15

वहाँ एक QByteArray में एक पूर्णांक जगह के कई तरीके हैं, लेकिन अगले आम तौर पर साफ है:

QByteArray byteArray; 
QDataStream stream(&byteArray, QIODevice::WriteOnly); 

stream << myInteger; 

यह आपको कई पूर्णांकों (या अन्य डेटा प्रकार) लिखने के लिए अनुमति देता है का लाभ दिया है बाइट सरणी काफी सुविधाजनक रूप से। यह आपको QDataStream::setByteOrder का उपयोग कर डेटा की समाप्ति सेट करने की अनुमति देता है।

+0

इस दस्तावेज़ में कोई गारंटी नहीं है कि यह बाइट सरणी में 4-बाइट स्टोर का उत्पादन करेगी। –

+3

@StephenChu किस परिस्थिति में यह 4-बाइट सरणी नहीं उत्पन्न करेगा (विशेष रूप से यदि 'myInteger' टाइप 'qint32' या' quint32' है)? –

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