2011-09-16 12 views
22

पर ASCII मूल्य जाओ मैं एक चरित्र है:इनपुट शब्द

char ch='A' 

मुझे तरीका है जिसके char to ASCII
जो एक ASCII NUMBER रिटर्न धर्मान्तरित या रास्ता दे।

आउटपुट: 65

+0

मैं सुझाव है कि आप यूनिकोड, multibyte वर्ण, और जावा चरित्र एपीआई – CrackerJack9

+1

के बारे में पढ़ा है कि सब पर एक 'ASCII' प्रतिनिधित्व नहीं है पात्रों की एक बड़ी राशि है:' char' जबकि 65535 की एक श्रृंखला है 'ASCII' 128 तक सीमित है। – Saul

उत्तर

40
char ch='A'; 

System.out.println((int)ch); 
+1

' char' की 65535 की सीमा है जबकि 'ASCII' 128 तक सीमित है। ऐसे वर्णों की एक बड़ी संख्या है जिनके पास' ASCII' प्रतिनिधित्व नहीं है। 'Int' misleads का उपयोग करके सोचने में एक यूनिकोड वर्णों और 'ASCII' कोड के बीच 1-से-1 पत्राचार मौजूद है। – Saul

+4

@ साउल: दरअसल। लेकिन ओपी पूछ रहा है कि एक चरित्र के लिए एएससीआईआई कोड कैसे प्राप्त करें, जिसका अर्थ है कि जिन पात्रों में उनकी रूचि है उनमें एएससीआईआई कोड होंगे। –

+0

ऐसे पात्रों के लिए यूनिकोड नंबर उनके ASCII समकक्षों के बराबर हैं क्योंकि ** यूनिकोड ASCII ** का पूर्ण सुपरसेट है। उदाहरण के लिए, यूनिकोड में 'ए 'दशमलव में' U + 0041' या '65' है। इसके विपरीत, ASCII के 99% 'char' के लिए कोई मैपिंग नहीं है। यही कारण है कि मैं कोड बिंदुओं के पक्ष में बहस करता हूं। – Saul

2

चार (एक लोअर केस ग) के साथ एक संख्यात्मक प्रकार है। यह पहले से ही चार के एसीआई मूल्य रखता है।

System.out.println("char " + ch + " has the following value : " + (int) ch); 
1

बस कर

int a = ch 

(भी इस एंड्रॉयड के साथ कोई संबंध नहीं है)

+0

(और टिप्पणी के बिना डाउनवॉटिंग कठोर है) – njzk2

15

वहाँ: बस के बजाय एक अंकीय मान एक टेक्स्ट का मूल्य के रूप में यह प्रदर्शित करने के लिए एक पूर्णांक के लिए यह डाली char मान के ASCII कोड प्राप्त करने के साथ जुड़े एक प्रमुख गॉचा है।

उचित अर्थ में, यह नहीं किया जा सकता है।

यह क्योंकि char65535 की एक सीमा है, जबकि ASCII 128 तक ही सीमित है है है। वहां बड़ी संख्या में वर्ण हैं जिनके पास ASCII प्रतिनिधित्व नहीं है।

उचित तरीका Unicode code point का उपयोग करना होगा जो जावा ब्रह्मांड में किसी चरित्र के मानक संख्यात्मक समतुल्य है।

शुक्र है, यूनिकोड ASCII का एक पूर्ण सुपरसेट है। इसका मतलब है कि लैटिन वर्णों के लिए यूनिकोड संख्या उनके ASCII समकक्षों के बराबर होती है। उदाहरण के लिए, यूनिकोड में A दशमलव में U+0041 या 65 है। इसके विपरीत, ASCII में 99% char-s के लिए कोई मैपिंग नहीं है। कम लंबी कहानी:

char ch = 'A'; 
int cp = String.valueOf(ch).codePointAt(0); 

इसके अलावा, एक 16-बिट आदिमchar वास्तव में एक कोड इकाई, न कि एक चरित्र का प्रतिनिधित्व करता है और इस प्रकार बेसिक बहुभाषी करने के लिए विमानhistorical reasons के लिए, प्रतिबंधित है। इसके बाहर की इकाइयों की आवश्यकता Characterऑब्जेक्ट्स है जो निश्चित बिट-लंबाई सीमा से दूर हो जाती है।

+0

स्ट्रिंग.वल्यूओएफ भारी है। यह – njzk2

+0

का एक बहुत ही ठोस तरीका है, हालांकि, यह एन्कोडिंग के अपेक्षाकृत मूल्य के बजाय यूनिकोड कोडपॉइंट प्राप्त करने का एक दिलचस्प तरीका है। – njzk2

+0

आप String.valueOf का उपयोग क्यों कर रहे हैं? पहले से ही char है, बस इसका उपयोग करें :) – CrackerJack9

4

char वास्तव में एक संख्यात्मक डेटाटाइप है - उदाहरण के लिए, आप int में एक जोड़ सकते हैं। यह एक हस्ताक्षरित short (16 बिट्स) है। उस संबंध में आप संख्यात्मक मूल्य प्राप्त करने के लिए आउटपुट को int पर कह सकते हैं।

हालांकि आपको यह पूछने के बारे में थोड़ा और सोचने की आवश्यकता है कि आप क्या पूछ रहे हैं - सभी वर्ण ASCII मान नहीं हैं। â, उदाहरण के लिए, या के लिए आप किस आउटपुट की अपेक्षा करते हैं?

इसके अलावा, आप यह क्यों चाहते हैं? इस दिन और उम्र में आपको यूनिकोड के बारे में सोचना चाहिए, ASCII नहीं।यदि आप लोगों को यह बताते हैं कि आपका लक्ष्य क्या है, और आप इस लौटे हुए मूल्य का उपयोग कैसे करना चाहते हैं, तो हम लगभग निश्चित रूप से इसे प्राप्त करने के बेहतर तरीके से आपको बता सकते हैं।

+1

यह एक हस्ताक्षरित बाइट नहीं है: यह एक हस्ताक्षरित दो-बाइट पूर्णांक है। –

+0

@ जेबी अच्छा पकड़, मैं 'शॉर्ट' के बारे में सोच रहा था - अब तय है। –

2
char a='a'; 
char A='A'; 
System.out.println((int)a +" "+(int)A); 

Output: 
97 65 
संबंधित मुद्दे