2012-04-10 26 views
5

चूंकि मुझे this प्रश्न पर कोई जवाब नहीं मिल रहा है, इसलिए मुझे प्रोटोटाइप होना चाहिए और खुद को जांचना चाहिए, क्योंकि मेरे डेटासेट हेडर को निश्चित आकार की आवश्यकता है, मुझे निश्चित आकार स्ट्रिंग की आवश्यकता है। तो, प्रोटोकॉल बफर में निश्चित आकार तार या बाइट सरणी निर्दिष्ट करना संभव है? यह यहां आसानी से स्पष्ट नहीं है, और मैं हेडर संदेश में निश्चित आकार तारों को मजबूर करने के बारे में बुरा महसूस करता हूं। --i.e, std::string('\0', 128);प्रोटोकॉल बफर: निश्चित आकार बफर के लिए कोई नोटेशन नहीं?

यदि नहीं मैं नहीं बल्कि एक #pragma pack(1) struct header {...}; '

संपादित का उपयोग करेंगे

प्रश्न परोक्ष रूप से here जवाब दे दिया। जवाब देंगे और

उत्तर

2

प्रोटोबफ में प्रोटोकॉल में और न ही .proto स्कीमा भाषा में ऐसी अवधारणा नहीं है। स्ट्रिंग्स और ब्लब्स में, डेटा हमेशा तकनीकी रूप से एक लम्बाई उपसर्ग का उपयोग करके परिवर्तनीय लंबाई (जो स्वयं वैरिन एन्कोडिंग का उपयोग करता है, इसलिए लंबाई भी परिवर्तनीय लंबाई है)।

बेशक, यदि आप केवल एक विशेष लंबाई के डेटा को स्टोर करते हैं, तो यह लाइन हो जाएगा। ध्यान दें कि चूंकि प्रोटोबफ में तार यूटीएफ -8 एन्कोडिंग का उपयोग करके यूनिकोड हैं, इसलिए एनकोडेड डेटा की लंबाई वर्णों की संख्या जितनी सरल नहीं है (जब तक कि आप केवल ASCII वर्णों का उपयोग नहीं कर रहे हों)।

0

यह पिछले उत्तर के लिए एक मामूली स्पष्टीकरण है। प्रोटोकॉल बफर यूटीएफ -8 के रूप में एन्कोड स्ट्रिंग करता है, यह उन्हें नियमित बाइट्स के रूप में एन्कोड करता है। ऑन-वायर प्रारूप वास्तविक बाइट्स के बाद उपभोग किए गए बाइट्स की संख्या होगी। https://developers.google.com/protocol-buffers/docs/encoding/ देखें।

जबकि ऑन-वायर प्रारूप हमेशा समान होता है, प्रोटोकॉल बफर डेवलपर्स के लिए दो इंटरफेस प्रदान करता है, प्राथमिक अंतर यह है कि पूर्व आमतौर पर डेवलपर को स्ट्रिंग प्रकार प्रदान करने का प्रयास करेगा, जहां के रूप में बाद में बाइट प्रकार प्रदान करने का प्रयास करेगा (आईई जावा बाइट्स के लिए स्ट्रिंग और बाइटएरे के लिए स्ट्रिंग प्रदान करेगा)।

+0

यूटीएफ -8 यूनिकोड का एन्कोडिंग है - यह यूनिकोड वर्ण बाइट्स पर ले जाता है। नियमित बाइट प्राप्त करने के लिए प्रोटोबफ यूटीएफ -8 का उपयोग करता है। – solidsnack

+0

@ स्नैक क्या आप पहले प्रेषण को सावधानी से फिर से पढ़ सकते हैं। – Claris

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