मैं "हैलो वर्ल्ड" जैसे एएससीआईआईआई पाठ की मनमानी स्ट्रिंग लेना चाहता हूं, और इसे कम वर्णों (जितना संभव हो उतना कम) वाले संस्करण में संकुचित करना चाहता हूं, लेकिन इस तरह से इसे डिकंप्रेस किया जा सकता है। संपीड़ित संस्करण केवल एसीआईआई अक्षरों से बना होना चाहिए। क्या इसे पूरा करने का कोई तरीका है, खासकर रूबी में?आप कम ASCII वर्णों में पाठ का थोड़ा सा संकुचित कैसे कर सकते हैं?
उत्तर
यदि आप जानते हैं कि केवल ASCII वर्णों का उपयोग किया जाएगा, तो यह प्रत्येक बाइट के 7 कम ऑर्डर बिट्स है। बिट हेरफेर के साथ, आप हर 8 बाइट्स को 7 (12.5% बचत) में मैश कर सकते हैं। यदि आप इसे एक छोटी सी सीमा में प्राप्त कर सकते हैं (केवल 64 वैध वर्ण), तो आप एक और बाइट छोड़ सकते हैं।
हालांकि, क्योंकि आप चाहते हैं कि संकुचित रूप में भी केवल ASCII वर्ण हों, जो आपको एक बाइट खो देता है - जो तब तक स्क्वायर तक जाता है जब तक कि आपका इनपुट 64-वर्णों तक सीमित न हो (उदाहरण के लिए हानिकारक संपीड़न दूसरों के साथ कुछ वर्णों को प्रतिस्थापित करता है , केवल कम मामले में भंडारण आदि)।
यदि आपके तार बड़े (> 1k) नहीं हैं, तो हेडर के आकार की वजह से gzip/bzip2 आदि का उपयोग करने के लिए न्यूनतम बचत होती है। यदि आपके पास एक हफमैन टेबल के रूप में उपयोग करने के लिए एक पूर्वनिर्धारित शब्दकोश था, तो आपको कुछ संपीड़न मिल सकता है लेकिन अन्य मामलों में, आप मूल पाठ के विरुद्ध ब्लोट प्राप्त कर सकते हैं।
पर पहले चर्चा अतः An efficient compression algorithm for short text strings
प्रश्न, जैसा कि मैंने इसे पढ़ा है, पाठ को संपीड़ित करने के बारे में है जहां आउटपुट 7-बिट भी है ASCII। उच्च बिट को हटाने से उस मामले में संपीड़न के रूप में काम नहीं किया जा रहा है। –
अद्यतन नोट किया गया, जवाब दिया गया जवाब। ;) –
कि मानक ASCII एन्कोडिंग से कई कम बिट के साथ bitstrings में पाठ स्ट्रिंग्स को संपीड़ित करने में अच्छे हैं Huffman encoding या LZW जैसे कई अच्छे पाठ संपीड़न एल्गोरिदम रहे हैं। एक बार आपके पास ऐसा एन्कोडिंग हो जाने के बाद, आप मानक ASCII वर्णों में पैक करने के लिए हमेशा बिट्सिंग को सात बिट्स के समूहों में विभाजित कर सकते हैं। मुझे यकीन है कि वहाँ पुस्तकालय हैं जो ऐसा करते हैं, लेकिन मैं रूबी कोडर का अधिक नहीं हूं और मेरे सिर के ऊपर से किसी को भी नहीं जानता।
जब तक आप एक निश्चित हफमैन तालिका का उपयोग नहीं करते हैं, तो टेबल आकार स्वयं छोटे तारों पर बड़े आकार में "संपीड़ित" होने की संभावना है। – RichardTheKiwi
ऐसा करने का सबसे आसान तरीका मानक एल्गोरिदम का उपयोग करके इसे संपीड़ित करना होगा, फिर बेस 64 परिणाम को एन्कोड करें। यह 'हैलो वर्ल्ड' जैसी छोटी स्ट्रिंग पर मदद करने की संभावना नहीं है, हालांकि - उस आकार में, आकार कम करने के लिए आप बहुत कम कर सकते हैं, जब तक कि आपके सभी तारों में समान प्रतिबंधित चरित्र सेट न हो, या पैटर्न जो कुछ जैसे हफमैन एन्कोडिंग का लाभ उठा सकते हैं।
यदि आपकी भाषा दी जाती है, तो अंग्रेजी कहें, तो यदि आपका शब्द अस्पष्ट रहता है तो आप सामान्य पात्रों को छोड़कर दूर हो सकते हैं। उदाहरण के लिए, "हैलो वर्ल्ड" "हेल wrld" बन सकता है यदि आपके शब्दकोश में केवल हेलो से मिलान करने के लिए हैलो और wrld से मेल खाने वाली दुनिया है। अरबी जैसे सेमिटिक भाषाओं में वास्तव में उनकी लिखित भाषा में कोई मुखर नहीं होता है, और लोग अभी भी उन्हें पढ़ने में कामयाब होते हैं। साथ ही, अन्य नियम जैसे कि शब्द को अपरकेस माना जाता है, चरित्र सेट को कम केस वर्णों को कम करने के लिए उपयोग किया जा सकता है (मान लीजिए कि दिया गया पाठ इन नियमों का पालन करता है)।
इसके अलावा, बाइट-वार संपीड़न ग्रंथों के लिए अच्छी तरह से काम करता है, जबकि वास्तविक शब्द भाषा पूरी तरह से संपीड़ित हो सकती है यदि आप पूरे शब्दों को एन्कोड करते हैं, क्योंकि शब्दावली का आकार बहुत सीमित है (यदि आप ग्रंथों के सीमित सेट को देखते हैं तो और भी सीमित)। लेकिन यह सवाल नहीं था, मैं यहां विषय-वस्तु प्राप्त कर रहा हूं।
- 1. पायथन - संकुचित Ascii स्ट्रिंग
- 2. क्या कोई कारण है कि आप SQL सर्वर में थोड़ा सा कथन का चयन नहीं कर सकते हैं?
- 3. कुशलता से थोड़ा सा मुखौटा
- 4. आप विम में पायथन का उपयोग कैसे कर सकते हैं?
- 5. पर्ल का उपयोग कर फ़ाइल में विस्तारित ASCII वर्ण कैसे प्राप्त कर सकते हैं?
- 6. सी में आप क्या नहीं कर सकते हैं जिसे आप उद्देश्य-सी में कर सकते हैं?
- 7. आप UIElement के अभिभावक को कैसे प्राप्त कर सकते हैं?
- 8. फ़ाइल में गैर-ASCII वर्णों को हटाएं
- 9. ASCII वर्णों को सामान्यीकृत करना
- 10. सी में कोष्ठक थोड़ा सा ऑपरेशन के परिणाम प्रकार के परिणाम प्रकार को बदल सकते हैं?
- 11. मैं गैर-ASCII वर्णों को विम में कैसे पेस्ट करूं?
- 12. आप आईएमएपी का उपयोग कर मेल कैसे भेज सकते हैं?
- 13. आप कैसे बता सकते हैं कि टमक्स में कौन सा फलक केंद्रित है?
- 14. जावास्क्रिप्ट में, क्या आप डोम का विस्तार कर सकते हैं?
- 15. क्या आप रूबी में अर्धविराम का उपयोग कर सकते हैं?
- 16. पायथन में यूनिकोड (गैर-ASCII) वर्णों को कैसे संभालें?
- 17. आप सूची में बहु-पंक्ति पाठ को लंबवत रूप से कैसे संरेखित कर सकते हैं?
- 18. सी # में आप कैसे नींबू (nybble) बाइट्स कर सकते हैं?
- 19. गैर-ASCII वर्णों को हटाने का प्रयास केवल
- 20. आप एंड्रॉइड में लोडिंग स्क्रीन कैसे उत्पन्न कर सकते हैं?
- 21. आप एक swf फ़ाइल को कैसे संकुचित करते हैं
- 22. Emacs में आप Emacs Lisp अभिव्यक्ति का मूल्यांकन कर सकते हैं और परिणाम के साथ इसे प्रतिस्थापित कर सकते हैं?
- 23. मैं SQL सर्वर में थोड़ा सा कैसे फ़्लिप करूं?
- 24. jQuery यूआई डेटपिकर: क्या आप एक तिथि प्रारूपित कर सकते हैं और एकाधिक सेपरेटर वर्णों को अनुमति दे सकते हैं?
- 25. SQL सर्वर 2005 तालिका में NTEXT फ़ील्ड में यूनिकोड/गैर-ASCII वर्ण कैसे प्राप्त कर सकते हैं?
- 26. मैं लाटेक्स को सादे-पाठ (ASCII) में कैसे परिवर्तित करूं?
- 27. रेल: आप एकाधिक नियंत्रकों का उपयोग कर सत्र चर का उपयोग कैसे कर सकते हैं?
- 28. बिटमैस्क में थोड़ा सा है, तो मैं कैसे जांचूं?
- 29. पायथन में गैर-ASCII वर्णों के लिए chr
- 30. आप कम विलंबता वातावरण में विलंबता को कैसे मापते हैं?
आप 'ए-जेए-जेड' युक्त वर्णमाला में 'ए-जेए-जेड' युक्त वर्णमाला में टेक्स्ट को संपीड़ित करना चाहते हैं? मुझे नहीं लगता कि यह संभव है। लंबाई को कम करने के लिए, आपको उपलब्ध वर्णों को बढ़ाने की आवश्यकता है। यदि आपका इनपुट वर्णमाला सीमित है, तो कहें, 'ए-जेए-जेड' और आपके आउटपुट में सभी 255 ASCII कोडपॉइंट्स हो सकते हैं, तो आप कुछ पर हो सकते हैं ... – deceze
जब आप कहते हैं कि संपीड़ित संस्करण केवल एसीआईआई से बना होना चाहिए अक्षर, क्या आपका मतलब है कि 0x00-0x19 वर्णों की अनुमति नहीं है? यदि आप ए-ज़ा-जे 0-9 में संभावित वर्ण नीचे लेते हैं, तो आप 5 वर्ण/int प्राप्त कर सकते हैं।लेकिन यह अब एएससीआई स्ट्रिंग नहीं होगा, हालांकि – Waneck
@deceze अगर यह नहीं किया जा सका, बाइनरी फाइलों को संपीड़ित नहीं किया जा सका (जैसा कि पहले से ही 8 बिट्स हैं)। यह किया जा सकता है, लेकिन आपको इनपुट से केवल आउटपुट कम मिलेगा यदि आपके पास (बड़ी संख्या में) दोहराव है और इसलिए एक शब्दकोश मदद करता है। –