में कम्प्रेस 21 अक्षरांकीय अक्षर मैं डेटा के 21 बाइट्स जो विशिष्ट रूप से एक व्यापार की पहचान करता है लेने के लिए और एक 16 बाइट char
सरणी में संग्रहीत करने की कोशिश कर रहा हूँ। मुझे इसके लिए सही एल्गोरिदम के साथ आने में परेशानी हो रही है।से 16 बाइट्स
व्यापार आईडी जो मैं संपीड़ित करने के लिए कोशिश कर रहा हूँ 2 क्षेत्रों के होते हैं:
- 18 अक्षरांकीय अक्षर ASCII वर्ण 0x20 0x7E को, समावेशी से मिलकर। (32-126)
- एक 3-चरित्र सांख्यिक स्ट्रिंग "000" को "999"
तो एक सी ++ वर्ग है कि इस डेटा धरना होगा इस तरह दिखता है:
class ID
{
public:
char trade_num_[18];
char broker_[3];
};
इस डेटा की जरूरत है एक 16- char
डेटा संरचना है, जो इस तरह दिखता में संग्रहीत करने के लिए:
class Compressed
{
public:
char sku_[16];
};
मैं इस तथ्य का लाभ लेने की कोशिश की है कि +०१२३१११७२५२८ में पात्रों के बाद सेकेवल 0-127 हैं प्रत्येक चरित्र में 1 अप्रयुक्त बिट था। इसी प्रकार, बाइनरी में 99 9 1111100111 है, जो केवल 10 बिट्स है - 2 बिट बाइट शब्द से कम 6 बिट्स। लेकिन जब मैं यह काम करता हूं कि मैं इसे कितना निचोड़ सकता हूं, सबसे छोटा मैं इसे 17 बाइट बना सकता हूं; एक बाइट बहुत बड़ा है।
कोई भी विचार?
वैसे, trade_num_
एक मिथ्या नाम है। इसमें अक्षरों और अन्य पात्र हो सकते हैं। यही कहता है कि स्पेक कहता है।
संपादित करें: भ्रम के लिए खेद है। trade_num_
फ़ील्ड वास्तव में 18 बाइट्स है और नहीं 16. 16. इस धागे को पोस्ट करने के बाद मेरा इंटरनेट कनेक्शन मर गया और मैं अभी तक इस धागे पर वापस नहीं जा सका।
EDIT2: मुझे लगता है कि यह डाटासेट के बारे में एक धारणा बनाने के लिए सुरक्षित है। Trade_num_ फ़ील्ड के लिए, हम मान सकते हैं कि गैर-प्रिंट करने योग्य ASCII वर्ण 0-31 मौजूद नहीं होंगे। ASCII कोड 127 या 126 (~) नहीं होगा। अन्य सभी उपस्थित हो सकते हैं, ऊपरी और निचले केस अक्षरों, संख्याओं और विराम चिह्नों सहित। यह सेट में कुल 94 वर्ण छोड़ देता है जो trade_num_
शामिल होंगे, ASCII कोड 32 से 125, समावेशी।
क्या संपीड़न दो तरीकों से होना चाहिए (यानी एक तरफा हैश स्वीकार्य है)? यदि हां, तो क्या आप मानचित्र पर लुकअप टेबल का उपयोग कर सकते हैं? – Alan
वर्ण अल्फान्यूमेरिक (केवल अक्षरों और अंक) हैं, या वे किसी भी ASCII चरित्र हो सकते हैं? –
व्यापार_num [18] क्यों है जब इसे केवल 16 बाइट्स स्टोर करने की आवश्यकता है? – Alan