बूस्ट सीआरसी द्वारा स्पिल्टेड फाइल के लिए चेकसम की गणना करें

मुझे आश्चर्य है कि अगर मैं एक चेकसम ए प्राप्त करने के लिए फ़ाइल के पहले भाग को पढ़कर 2 चेकसम की गणना कर सकता हूं और फिर बाकी चेकसम बी प्राप्त करने के लिए बाकी फाइल को पढ़ सकता हूं, और इन दो चेकसम ए, बी को एक यूनिक चेक योग ( लंबी लंबाई के साथ)

मैं बूस्ट :: सीआरसी लाइब्रेरी का उपयोग इसे लागू करने का प्रयास करता हूं, लेकिन मुझे नहीं पता कि मैं इसका सही उपयोग करता हूं या नहीं? (1) process_bytes का दूसरा पैरामीटर, क्या इसका मतलब कुल बफर लंबाई है? (2) क्या परिणाम फिर से फ़ंक्शन द्वारा गणना की जाएगी कि मुझे सरणी के बारे में चिंता करने की ज़रूरत नहीं है? या जब मैं process_byte को कॉल करता हूं, तो यह केवल बफर सरणी के नए एकल बाइट के नए चेकसम की गणना करता है?

सच कहूं

    std::ifstream  ifs( argv[i], std::ios_base::binary );

    if ( ifs )
    {
        do
        {
            char  buffer[BUFFER_SIZE];

            ifs.read( buffer, BUFFER_SIZE);
            result.process_bytes( buffer, HALF_FILE_SIZE );
        } while (HALF or END of FILE );
     }
    std::cout << result.checksum() << std::endl;

plz refer to this page to see the boost::CRC example code: http://www.boost.org/doc/libs/1_37_0/libs/crc/crc_example.cpp

0

1 उत्तर

मैं यह नहीं समझ सकता कि आप क्या पूछ रहे हैं।

सबसे पहले, एक सीआरसी चेकसम नहीं है। चेकसम में "योग" का अर्थ है कि डेटा जोड़ा जाता है। एक सीआरसी एक परिमित क्षेत्र पर एक बहुपद शेष की गणना करता है, जो कि योग नहीं है। यह महत्वपूर्ण है, क्योंकि आप सीआरसी के संयोजन के बारे में पूछ रहे हैं। पूरी चीज के सीआरसी प्राप्त करने के लिए दो टुकड़ों के सीआरसी को जोड़ा नहीं जा सकता है।

दूसरा, कई टुकड़ों के सीआरसी प्राप्त करने का तरीका उन टुकड़ों पर एक सीआरसी की गणना करना है। उदाहरण कोड क्या है। परिणाम में एक एकल सीआरसी होता है जिसे प्रत्येक कोड के साथ अद्यतन किया जाता है जो process_bytes के साथ चलाया जाता है।

तीसरा, यह दो सीआरसी और दो टुकड़ों की लंबाई को देखते हुए दो सीआरसी को गठबंधन करने के लिए है संभव है, जो कि दो टुकड़ों के एक सीआरसी के रूप में क्या होगा। ऑपरेशन छोटा नहीं है, लेकिन आप इसे zlib's crc32_combine में पा सकते हैं() दिनचर्या

0
जोड़ा