यदि मैं एक वर्ण को byte
में परिवर्तित करता हूं और फिर char
पर वापस जाता हूं, तो वह चरित्र रहस्यमय तरीके से गायब हो जाता है और कुछ और बन जाता है। यह कैसे संभव है?जावा में बाइट और चार रूपांतरण
char a = 'È'; // line 1
byte b = (byte)a; // line 2
char c = (char)b; // line 3
System.out.println((char)c + " " + (int)c);
लाइन तक 2 सब कुछ ठीक है:
इस कोड है
लाइन 1 में मैं प्रिंट कर सकता है "एक" कंसोल में है और यह 'ई' में दिखाई देगा।
लाइन 2 में मैं कंसोल में "बी" प्रिंट कर सकता हूं और यह दिखाएगा -56, यह 200 है क्योंकि बाइट हस्ताक्षरित है। और 200 "È" है। तो यह अभी भी ठीक है।
लेकिन लाइन 3 में क्या गलत है? "सी" कुछ और बन जाता है और कार्यक्रम ? 65480
प्रिंट करता है। यह कुछ अलग है।
सही परिणाम प्राप्त करने के लिए मुझे लाइन 3 में क्या लिखना चाहिए?
ए 'बाइट'' 8 बिट' है।'char'' 16 बिट' है। विचार मिला? –
char 2byte लेता है। – Ankit
@ रोहितजैन और एक चरित्र - जिसके द्वारा मेरा मतलब यूनिकोड कोड बिंदु है - दो वर्ण या चार बाइट ले सकते हैं। इसके अलावा, कौन जानता है कि सामान्यीकरण के रूप में क्या चीजें हैं? स्ट्रिंग '" È "' में क्रमशः सामान्यीकरण फॉर्म सी या डी में निर्भर करता है या नहीं, इसके आधार पर एक या दो कोड बिंदु शामिल हो सकते हैं। – tchrist