मैं पुराने टैब-पृथक MySQL डेटाबेस डंप फ़ाइलों का एक समूह प्रोटोकॉल बफर में परिवर्तित करने पर काम कर रहा हूं और एक स्नैग में चला गया हूं। MySQL तालिका में int(11) unsigned
प्रकार का एक फ़ील्ड शामिल है, जिसे मैंने .proto
फ़ाइल में protobuf uint32
पर मैप किया है। MySQL रिकॉर्ड्स को पार्स करते समय और उन्हें प्रोटोबफ संदेश में बदलने की कोशिश करते समय, ओवरफ्लो से बचने के लिए Integer.valueOf(String)
(या Long.valueOf(String)
) का उपयोग करके उस क्षेत्र को पार्स करने का मोहक है। हालांकि, Protocol Buffers Language Guidehere इंगित करता है कि जावा में, uint32
एस int
डेटाटाइप का उपयोग करके दर्शाए जाते हैं, लेकिन पहले बिट को साइन बिट के बजाए उच्चतम ऑर्डर बिट के रूप में पुन: परिभाषित किया जाता है।मैं जावा में प्रोटोकॉल बफर uint32s में MySQL हस्ताक्षरित इनट्स कैसे परिवर्तित करूं?
तो इससे पहले कि मैं अपने ही String
बारे में जाना ->uint32
-flavored- int
पार्सर, मैंने सोचा था कि किसी और को पहले से ही इस विशेष समस्या को हल किया है कि क्या यह पूछ लायक था। जावा में प्रोटोकॉल बफर uint32
पर String
MySQL int unsigned
का प्रतिनिधित्व करने का सही तरीका क्या है?
मैं इसी तरह के निष्कर्ष पर आया था, लेकिन आपने इसे जितना अधिक साफ किया है उससे लागू किया है। यह एक समान प्रश्न का सुझाव देता है: जावा के माध्यम से 'uint64' protobuf' को 'हस्ताक्षरित bigint' को कैसे पार्स करें? –
आपका समाधान यह भी बताता है कि 'int' से' long' तक कास्टिंग करके आसानी से अपरिवर्तित किया जा सकता है, जो अच्छा है। –
@ जोशहांसेन, मैंने आपकी टिप्पणियों के जवाब में अपना जवाब अपडेट किया। – MvG