Java में char को int में बदलें


124

नीचे एक कोड स्निपेट है,

int a = 1;
char b = (char) a;
System.out.println(b);

लेकिन मुझे जो मिल रहा है वह खाली आउटपुट है।

int a = '1';
char b = (char) a;
System.out.println(b);

मुझे मेरे आउटपुट के रूप में 1 मिलेगा।

क्या कोई इसे समझा सकता है? और अगर मैं पहली स्निपेट में एक इंट को एक चार में बदलना चाहता हूं, तो मुझे क्या करना चाहिए?


9
" एक इंट को एक चार में परिवर्तित करें? " हो सकता है b = (char)('0' + a)लेकिन केवल के लिए 0 <= a <= 9
जॉनचेन 902

6
दशमलव मान 01 एक गैर-मुद्रण वर्ण है; यह ठीक से काम कर रहा है।
अपराह्न

जवाबों:


109
int a = 1;
char b = (char) a;
System.out.println(b);

एससीआई मूल्य 1 (स्टार्ट-ऑफ-हेडिंग चार, जो प्रिंट करने योग्य नहीं है) के साथ चार का प्रिंट निकालेंगे।

int a = '1';
char b = (char) a;
System.out.println(b);

एससीआई मूल्य 49 ('1' के अनुरूप एक) के साथ चार का प्रिंट आउट लेगा

यदि आप एक अंक (0-9) में परिवर्तित करना चाहते हैं, तो आप इसमें 48 जोड़ सकते हैं और कास्ट कर सकते हैं, या कुछ ऐसा कर सकते हैं Character.forDigit(a, 10);

यदि आप intएस्की को एसेसी मूल्य में बदलना चाहते हैं , तो आप Character.toChars(48)उदाहरण के लिए उपयोग कर सकते हैं ।


2
System.out.println('b'+3);प्रिंटलाइन का उपयोग करने के b3बजाय मैं कैसे प्राप्त कर सकता हूं 101? प्रिंटफ के बजाय कोई और तरीका?
आसिफ मुश्ताक

2
@UnKnown आपको System.out.println ("b" "3) के रूप में एक चार के बजाय एक स्ट्रिंग बनाने की आवश्यकता है;
हगग्रा

Character.toCharsयूनिकोड कोड बिंदुओं पर कार्य करता है, ASCII मूल्यों पर नहीं। आप (बीएमपी के लिए) ही प्राप्त करते हैं, अगर आप सिर्फ चार से इंट कास्ट करते हैं।
कमजोर

55

मेरा उत्तर jh314 के उत्तर के समान है, लेकिन मैं थोड़ा गहराई से समझाऊंगा।

इस मामले में आपको क्या करना चाहिए:

int a = 1;
char b = (char)(a + '0');
System.out.println(b);

यहाँ, हमने '0' का उपयोग किया क्योंकि चार्ट वास्तव में ASCII मूल्यों द्वारा दर्शाए गए हैं। '0' एक चार है और 48 के मान से दर्शाया गया है।

हमने टाइप किया (a + '0')और इन्हें जोड़ने के लिए, जावा ने '0' को अपने ASCII मूल्य में बदल दिया जो 48 है और a 1 है इसलिए योग 49 है। तब हमने जो किया वह है:

(char)(49)

हम intकरने के लिए डाली char। 49 के बराबर ASCII '1' है। आप किसी भी अंक को इस तरह से चार्ट में बदल सकते हैं और .toString()विधि का उपयोग करने से बेहतर और बेहतर तरीका है और फिर .charAt()विधि द्वारा अंक को घटा सकते हैं ।


42

ऐसा लगता है कि आप Character.forDigitविधि की तलाश कर रहे हैं :

final int RADIX = 10;
int i = 4;
char ch = Character.forDigit(i, RADIX);
System.out.println(ch); // Prints '4'

वहाँ भी एक विधि है कि एक चर से वापस एक int में परिवर्तित कर सकते हैं:

int i2 = Character.digit(ch, RADIX);
System.out.println(i2); // Prints '4'

ध्यान दें कि RADIXआप बदलकर हेक्साडेसिमल (मूलांक 16) और 36 तक के किसी भी मूलांक (या Character.MAX_RADIXजैसा कि यह भी जाना जाता है) का समर्थन कर सकते हैं ।


@ProgrammingNub को "इंट की वैल्यू" परिभाषित करें। । क्या आप इसे अंक 4 को प्रिंट नहीं करना चाहते हैं? या क्या आप इंटिस के असिसी-मूल्य को प्रिंट करना चाहेंगे, ताकि 65प्रिंट हो A? क्योंकि यहाँ मेरा उत्तर इस प्रश्न की आवश्यकताओं के लिए अपेक्षित व्यवहार को छापता है। Ideone.com/09LAFR
साइमन फोर्सबर्ग

10
int a = 1;
char b = (char) a;
System.out.println(b);

होला, ठीक है, मैं उसी समस्या से गुज़रा लेकिन मैंने जो किया वह निम्न कोड था।

int a = 1
char b = Integer.toString(a).charAt(0);
System.out.println(b);

इसके साथ आपको दशमलव मान एक चार्ट प्रकार के रूप में मिलता है। मैंने अनुक्रमणिका 0 के साथ charAt () का उपयोग किया क्योंकि उस स्ट्रिंग में एकमात्र मान 'a' है और जैसा कि आप जानते हैं, उस स्ट्रिंग में 'a' की स्थिति 0 पर शुरू होती है।

क्षमा करें यदि मेरी अंग्रेजी अच्छी तरह से नहीं बताई गई है, तो उम्मीद है कि यह आपकी मदद करेगी।


3
int a = 1;
char b = (char) (a + 48);

ASCII में, हर वर्ण की अपनी संख्या होती है। और चार '0' दशमलव के लिए 48 है, '1' 49 है, और इसी तरह। तो अगर

char b = '2';
int a = b = 50;

1

किसी ने भी यहां "असली" सवाल का जवाब नहीं दिया है: आप इंट को सही ढंग से चार्ट में बदल रहे हैं; ASCII तालिका में 01 का एक दशमलव मान "हेडिंग की शुरुआत" है, जो गैर-मुद्रण वर्ण है। ASCII तालिका देखने का प्रयास करें और 33 और 7E के बीच एक अंतर मान परिवर्तित करें; जो आपको पात्रों को देखने के लिए देगा।


1

जब भी आप कास्ट पूर्णांक टाइप करते हैं तो यह उस इंट की एएससीआई वैल्यू लौटा देगा (एक बार बेहतर तरीके से एससीआई टेबल के माध्यम से जाएं)

    int a=68;
    char b=(char)a;

    System.out.println(b);//it will return ascii value of 68

    //output- D

2
क्रमबद्ध करें .... charयूटीएफ -16 कोड इकाई है। यूटीएफ -16 कोड इकाई के रूप में 68 यूनिकोड कोड पॉइंट यू + 0044 का प्रतिनिधित्व करने के लिए आवश्यक एकमात्र कोड इकाई है । System.out टेक्स्ट के एन्कोडिंग को डिफ़ॉल्ट एन्कोडिंग में बदल देगा (संभवतः टर्मिनल / कंसोल से मेल खाता है जो प्रोग्राम चल रहा है)। Println एक चार्ट लेता है और इसे एनकोड करने का प्रयास करता है। चूँकि चार्ट एक पूर्ण कोडपॉइंट है, यह कोशिश कर सकता है। चूंकि U + 0044 लगभग सभी वर्ण सेटों में एक चरित्र है, इसलिए इसे टर्मिनल के पास ले जाने में सफलता मिलनी चाहिए। ASCII से कोई लेना देना नहीं है।
टॉम ब्लोडेट

0

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

यदि आप वर्ण '1' का प्रिंट आउट लेना चाहते हैं, तो आप जिस एन्कोडिंग योजना का उपयोग कर रहे हैं, उसमें '1' का मान देख सकते हैं। यूनिकोड में यह 49 (एएससीआईआई के समान) है। लेकिन यह केवल 0-9 अंकों के लिए काम करेगा।

आप स्ट्रिंग के बजाय स्ट्रिंग का उपयोग करके और जावा की अंतर्निहित toString()पद्धति का उपयोग करके बेहतर हो सकते हैं :

int a = 1;
String b = toString(a);
System.out.println(b);

यह आपके सिस्टम एन्कोडिंग जो भी काम करेगा, और बहु-अंकीय संख्याओं के लिए काम करेगा।


1
क्षमा करें, लेकिन एक चार एक इंट नहीं है, क्योंकि यह बाइट्स की एक अलग संख्या से बना है (त्वरित रेफरी। चार-इंट प्रतिनिधित्व - स्टैकफ़्लोफ़्लो )। एक चार्ट को एक संख्या द्वारा दर्शाया जा सकता है, आप सही हैं, लेकिन यह पूर्णांक नहीं है।
morels

इसके अलावा, मुझे लगता है कि आपको दूसरी पंक्ति को पढ़ना चाहिए "स्ट्रिंग b = Integer.toString (a);"
दोषपूर्ण

Char data type को java.lang.Character के साथ-साथ int और unicode code points और code इकाइयों के साथ अपने संबंधों को अच्छी तरह से परिभाषित किया गया है ।
इयान

0

यदि आप ascii वर्णों को उनके ascii कोड के आधार पर प्रिंट करना चाहते हैं और उस (unicode वर्णों की तरह) से आगे नहीं जाना चाहते हैं, तो आप अपने चर को बाइट के रूप में परिभाषित कर सकते हैं, और फिर (char) रूपांतरित का उपयोग कर सकते हैं। अर्थात:

public static void main(String[] args) {
    byte b = 65;
    for (byte i=b; i<=b+25; i++) {
        System.out.print((char)i + ", ");
    }

BTW, 'A' अक्षर के लिए ascii कोड 65 है


0

सुनिश्चित करें कि पूर्णांक मान एक वर्णमाला / वर्ण का ASCII मान है।

अगर नहीं तो बनाइए।

for e.g. if int i=1

फिर इसमें 64 जोड़ें ताकि यह 'A' का 65 = ASCII मान बन जाए

char x = (char)i;

print x

// 'A' will be printed 

0

यदि हम वर्ग प्रकारों के बारे में बात कर रहे हैं - आदिम नहीं, तो निम्न चाल चलनी होगी:

Integer someInt;
Character someChar;

someChar = (char)Integer.parseInt(String.valueOf(someInt));

इस प्रक्रिया में इसे स्ट्रिंग बनाने की आवश्यकता नहीं है, और आपके पास पैरेन्थेसिस की बेमेल संख्या है।
साइमन फोर्सबर्ग

साइमन, "कोष्ठक"। फिर सलाह कैसे?
मटुआ

-1

पूर्ण रूपांतरण अवधारणा के लिए निम्नलिखित कार्यक्रम देखें

class typetest{
    public static void main(String args[]){
        byte a=1,b=2;
        char c=1,d='b';
        short e=3,f=4;
        int g=5,h=6;
        float i;
        double k=10.34,l=12.45;
        System.out.println("value of char variable c="+c);
        // if we assign an integer value in char cariable it's possible as above
        // but it's not possible to assign int value from an int variable in char variable 
        // (d=g assignment gives error as incompatible type conversion)
        g=b;
        System.out.println("char to int conversion is possible");
        k=g;
        System.out.println("int to double conversion is possible");
        i=h;
        System.out.println("int to float is possible and value of i = "+i);
        l=i;
        System.out.println("float to double is possible");
    }
}

आशा है, यह कम से कम कुछ मदद करेगा


-2

यदि आप किसी पात्र को उसके अनुरूप पूर्णांक में बदलना चाहते हैं, तो आप कुछ इस तरह से कर सकते हैं:

int a = (int) 'a';
char b = (char) a;
System.out.println(b);

ऐसा इसलिए होता है क्योंकि ASCII में कुछ ऐसे आइटम होते हैं जिन्हें सामान्य रूप से मुद्रित नहीं किया जा सकता है।

उदाहरण के लिए, संख्या 97 से 122 निचले अक्षर के समान पूर्णांक हैं z।


-2
public class String_Store_In_Array 
{
    public static void main(String[] args) 
    {
        System.out.println(" Q.37 Can you store string in array of integers. Try it.");

        String str="I am Akash";
        int arr[]=new int[str.length()];
        char chArr[]=str.toCharArray();
          char  ch;
        for(int i=0;i<str.length();i++)
        {

            arr[i]=chArr[i];
        }
        System.out.println("\nI have stored it in array by using ASCII value");
        for(int i=0;i<arr.length;i++)
        {

            System.out.print(" "+arr[i]);
        }
        System.out.println("\nI have stored it in array by using ASCII value to original content");
        for(int i=0;i<arr.length;i++)
        {
             ch=(char)arr[i];

            System.out.print(" "+ch);
        }
    }
}

2
कृपया केवल एक कोड डंप के बजाय एक स्पष्टीकरण प्रदान करें।
जूल्स ड्यूपॉन्ट

हालांकि यह कोड-ओनली पोस्ट प्रश्न का उत्तर दे सकता है, कृपया इसका स्पष्टीकरण जोड़ें कि यह ऐसा क्यों करता है। यह भविष्य के उपयोगकर्ताओं को उनकी स्थिति के लिए उत्तर का मूल्यांकन करने में मदद करेगा।
टॉम ब्रूनबर्ग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.