2013-06-12 6 views

उत्तर

9

क्योंकि यदि यह एक int लौटाता है, तो सीआरसी का आधा नकारात्मक होगा। उम्मीद है कि एक 32-बिट सीआरसी हस्ताक्षरित है, यानी 0..4294967295, जिसे एक int में प्रदर्शित नहीं किया जा सकता है।

+0

मार्क, उत्तर के लिए धन्यवाद। मेरे पास फॉलो-अप है: मैं उन फ़ाइलों को पढ़ और लिख रहा हूं जिनके अंतिम बाइट्स सभी पिछले बाइट्स का सीआरसी हैं। सीआरसी 4 बाइट्स में फिट होना चाहिए। इसलिए मैं लंबे सीआरसी के ऊपरी 4 बाइटों को अनदेखा नहीं कर सकता, क्या मैं कर सकता हूं? मुझे लंबे समय तक एक "हस्ताक्षरित" प्रतिनिधित्व को सही रूप से परिवर्तित करने की आवश्यकता होगी? – Steveo

+1

परिभाषा के अनुसार, 32-बिट सीआरसी लंबे चार बाइट्स में फिट बैठता है। जावा में कोई हस्ताक्षर 32-बिट प्रकार नहीं है। –

2

java.util.zip.CRC32Checksum इंटरफ़ेस है, जो getValue() के लिए एक long वापसी प्रकार की आवश्यकता को लागू करता है, इसलिए एक 32-बिट चेकसम के लिए एक long की आवश्यकता होती है; आउटपुट के ऊपरी 32 बिट लगभग निश्चित रूप से 0.

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