2012-10-31 21 views
5

के बावजूद फोर्स gzip को डिकंप्रेस करने के लिए मजबूर करें मुझे लगता है कि ऐसा करने का कोई तरीका है लेकिन मुझे यकीन नहीं है कि कैसे? असल में, मैं संपीड़न प्रोग्राम लिख रहा था जिसके परिणामस्वरूप मैंने संकुचित डेटा को अनजिप करने का प्रयास किया था। आम तौर पर इसका मतलब यह है कि डिकंप्रेसर ने वास्तव में मेरे डेटा को सही स्वरूप में होने के रूप में पहचाना और इसे डिकंप्रेस किया, लेकिन जब परिणामस्वरूप सीआरसी द्वारा संकेतित अपेक्षित लंबाई की तुलना की गई, तो वे समान नहीं थे।सीआरसी त्रुटि

हालांकि, तुलनात्मक कारणों से, मैं वास्तव में यह देखने के लिए आउटपुट देखना चाहता हूं कि यह सिर्फ एक कॉन्सटेनेशन मुद्दा है (जो अपेक्षाकृत स्पष्ट होना चाहिए कि डिकंप्रेस्ड आउटपुट अस्पष्ट नहीं है बल्कि गलत क्रम में)।

उत्तर

0

जहां तक ​​मुझे पता है, सीआरसी चेक जीजेआईपी रैपर का हिस्सा है, वास्तविक प्रारूप में वास्तविक संकुचित डेटा का हिस्सा नहीं है।

तो आप सचमुच बाइट्स को संकुचित डेटा स्ट्रीम ले सकते हैं, अंत में जीजेआईपी हेडर और सीआरसी को अनदेखा कर सकते हैं, और इसे इन्फ्लेटर के माध्यम से पास कर सकते हैं।

दूसरे शब्दों में, आपको GZIP File format specification में "संपीड़ित ब्लॉक" के रूप में संदर्भित बाइट्स लेने की आवश्यकता है और जावा इन्फ्लेटर ऑब्जेक्ट का उपयोग करके डिकंप्रेस करने का प्रयास करें। काम का एक छोटा सा काम, लेकिन ग्रेग के रूप में GZIP कोड को फिर से संकलित करने से संभवतः कम करता है (हालांकि उसका विकल्प सिद्धांत रूप में भी काम करेगा)।

8

आपने कहा "अनजिप", लेकिन सवाल "gzip" कहता है। जो यह है? वे दो अलग-अलग कार्यक्रम हैं जो दो अलग-अलग प्रारूपों पर काम करते हैं। मैं gzip मान लेंगे। इसके अलावा लंबाई "सीआरसी द्वारा संकेतित नहीं है"। Gzip ट्रेलर में एक सीआरसी और एक असम्पीडित लंबाई होती है (मॉड्यूलो 2), जो दो अलग-अलग चीजें हैं।

gzip कमांड सभी वैध डिफ्लेट डेटा को डिक्रप्रेस करेगा और सीआरसी की जांच करने से पहले इसे लिख देगा। तो अगर, उदाहरण के लिए, मैं अंत में एक .gz फ़ाइल और भ्रष्ट सिर्फ सीआरसी (या लंबाई) लेते हैं, और कार्य करें:

gzip -dc <corrupt.gz> result 

तो परिणाम पूरे, सही असम्पीडित डाटा प्रवाह होगा। gzip को संशोधित और पुन: संकलित करने की कोई आवश्यकता नहीं है, न ही अपना स्वयं का अनजिपर लिखना है। gzip crc के बारे में शिकायत करेगा, लेकिन फिर भी सभी डेटा लिखा जाएगा।

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