2012-01-24 9 views
5

मैं एक उम्मीदवार कुंजी है (MongoDB उम्मीदवार कुंजी है, __id) thats निम्नलिखित प्रोटोकॉल बफ़र्स में दिखाई देता है:द्विआधारी से पाठ एन्कोडिंग, गैर मुद्रण वर्ण, प्रोटोकॉल बफ़र्स, MongoDB और bson

message qrs_signature 
{ 
    required uint32 region_id = 1; 
    repeated fixed32 urls = 2; 
}; 

स्वाभाविक रूप से मैं अपने बीएसओ दस्तावेज़ में प्रोटोकॉल बफर एन्कोडेड स्ट्रिंग (ParseToString(std::string) के माध्यम से) का उपयोग नहीं कर सकता क्योंकि इसमें गैर-प्रिंटिंग वर्ण हो सकते हैं। इसलिए, मैं डेटा एन्कोड करने के लिए ascii85 एन्कोडिंग का उपयोग कर रहा हूं (this library का उपयोग कर)। मेरे पास दो प्रश्न हैं।

  1. बी 85 एन्कोडिंग बीसन-सुरक्षित है।
  2. bson's binary type for क्या है? क्या कोई तरीका है कि मैं एक मैंगोडब एपीआई कॉल का उपयोग करके उस क्षेत्र में अपनी (बाइनरी) स्ट्रिंग को प्रत्यारोपित कर सकता हूं, या यह केवल एक सिल्वरैक्टिक चीनी है जो किसी मान-प्रकार को इंगित करने के लिए है जिसे किसी रूप में संसाधित करने की आवश्यकता है (--ie, मूल नहीं मोंगोडब इकाई)?

संपादित

append binary एपीआई इस शो के डेटा हेक्स के रूप में एन्कोड किया जा रहा (OMG!), Base85 इसलिए अधिक स्थान कुशल (मेरे मामले में रिकॉर्ड प्रति 22 बाइट्स) है।

उत्तर

4
  1. बीएसओएन सुरक्षित, हाँ। ASCII85 एन्कोडिंग का आउटपुट भी वैध utf-8 iirc है।
  2. इसका उपयोग बाइनरी डेटा के हिस्सों को स्टोर करने के लिए किया जाता है। बाइनरी डेटा एक आधिकारिक रूप से समर्थित प्रकार है और आप अपने मामले में उपयुक्त ड्राइवर कोड, बीएसओएनओबीजे का उपयोग कर बीएसओएन क्षेत्रों में बाइनरी मानों को धक्का दे सकते हैं। विवरण के लिए अपने ड्राइवर दस्तावेज़ या स्रोत कोड का संदर्भ लें।
+0

आहा, सत्यापन के लिए धन्यवाद, अब मुझे लगता है कि 'बीएसओएनओबीज बिल्डिंग :: एपेंडबिनडाटा' नामक बाइनरी डेटा जोड़ने के लिए एक विशिष्ट विधि है, जिसमें लम्बाई क्षेत्र होता है। –

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