जावा में ASCII संख्यात्मक मान के लिए वर्ण बदलें


174

मेरे पास String name = "admin";
तो हैString char = name.substring(0,1); //char="a"

मैं charइसके ASCII मूल्य (97) में परिवर्तित करना चाहता हूं , मैं जावा में यह कैसे कर सकता हूं?


2
JW String charकभी संकलन करेगा । हो सकता है कि आप चर का नाम बदलना चाहते होंString ch
विकास प्रसाद

ASCII? क्या आप निश्चित हैं कि आप क्या चाहते हैं? जावा यूटीएफ -16 कैरेक्टर एन्कोडिंग का उपयोग यूनिकोड वर्ण सेट (जावास्क्रिप्ट, .NET, VBA, VB4 / 5/6, NCHAR, NVARCHAR, NTFS, Windows API,…) की तरह करता है। उत्तर कई श्रेणियों में आते हैं: ASCII के बारे में स्पष्ट रूप से उत्तर देना, UTF-16 के बारे में उत्तर देना और UTF-16 से कई शॉर्टकट लीप के माध्यम से ASCII के बारे में उत्तर देना (और कुछ भी सीधे सादे गलत हैं)।
टॉम ब्लोडेट

जवाबों:


296

बहुत आसान। बस अपने charएक के रूप में डाली int

char character = 'a';    
int ascii = (int) character;

आपके मामले में, आपको पहले स्ट्रिंग से विशिष्ट चरित्र प्राप्त करने की आवश्यकता है और फिर इसे डाली जाए।

char character = name.charAt(0); // This gives the character 'a'
int ascii = (int) character; // ascii is now 97.

हालांकि कलाकारों को स्पष्ट रूप से आवश्यक नहीं है, लेकिन इसकी पठनीयता में सुधार होता है।

int ascii = character; // Even this will do the trick.

4
@VKSingla - इसकी आवश्यकता से सहमत नहीं है, लेकिन यह पठनीयता में सुधार करता है और ओपी को समझने में मदद करेगा।
सुदोहरूल

1
क्यों एक और चर बनाने के लिए? यहां तक ​​कि अगर आप कलाकारों को चाहते हैं तो इस तरह से क्यों नहीं? int ascii = (int)name.charAt(0);
रिकार्डो काचेरा

@ आरजे - ठीक है मैंने इसके बारे में नहीं सोचा था
रिकार्डो कैचेरा

9
ASCII वर्णों में 0 से 127 तक 7-बिट कोड हैं। इसलिए int का उपयोग करने की कोई आवश्यकता नहीं है। बाइट पूरी तरह से किसी भी कोड को स्टोर कर सकती है।
याहोर

मैं इंट को चार में बदलना चाह रहा था, कलाकारों के संकेत ने मुझे उत्तर से दूसरे तरीके से इसे करने में मदद की।
Isidro Serrano Pineda

49

बस एक अलग दृष्टिकोण

    String s = "admin";
    byte[] bytes = s.getBytes("US-ASCII");

bytes[0] एक .. के ascii का प्रतिनिधित्व करेगा और इस तरह पूरे सरणी में अन्य पात्रों।


20

इसके अलावा:

String char = name.substring(0,1); //char="a"

आपको charAt()विधि का उपयोग करना चाहिए ।

char c = name.charAt(0); // c='a'
int ascii = (int)c;

4
बस याद रखने के लिए कि "चार" जावा में आरक्षित शब्द है।
कोल्ड

12

कई उत्तर जो यह दिखाने के लिए कि यह कैसे करना है, सभी गलत हैं क्योंकि जावा अक्षर ASCII वर्ण नहीं हैं। जावा यूनिकोड वर्णों की एक मल्टीबैट एन्कोडिंग का उपयोग करता है। यूनिकोड वर्ण सेट ASCII का एक सुपर सेट है। तो जावा स्ट्रिंग में ऐसे अक्षर हो सकते हैं जो ASCII से संबंधित न हों। ऐसे वर्णों में ASCII संख्यात्मक मान नहीं होता है, इसलिए यह पूछना कि Java चरित्र का ASCII संख्यात्मक मान कैसे प्राप्त किया जा सकता है।

लेकिन आप ऐसा क्यों करना चाहते हैं? आप मूल्य के साथ क्या करने जा रहे हैं?

यदि आप संख्यात्मक मान चाहते हैं तो आप जावा स्ट्रिंग को ASCII स्ट्रिंग में बदल सकते हैं, असली सवाल यह है कि "मैं ASCII के रूप में जावा स्ट्रिंग को कैसे एन्कोड करता हूं"। उसके लिए, ऑब्जेक्ट का उपयोग करें StandardCharsets.US_ASCII


2
एकदम सही जवाब। टाइप कास्टिंग सिर्फ एक शॉर्ट-कट है जो सटीक नहीं है। खुशी है कि आपका जवाब शुरू में आया ताकि लोग अवधारणा को गलत न समझें।
कार्तिक आर

मुझे ASCII स्ट्रिंग जानने की आवश्यकता है क्योंकि इसका कारण यह है कि मुझे यूनिकोड डेटा एक बैकएंड प्रक्रिया में आ रहा है जिसे शुद्ध ASCII को कहीं और रखने की आवश्यकता है, और मुझे गैर-यूनिकोड प्राप्त करने की आवश्यकता है। आमतौर पर जब यूजर्स एमएस वर्ड (जैसे कर्व्ड डबल और सिंगल कोट्स, लॉन्ग डैश आदि) से पेस्ट कर रहे होते हैं। StandardCharsets.US_ASCII का उल्लेख करना सही बात है, लेकिन यह मूल प्रश्नकर्ता को इसका उपयोग करने का तरीका नहीं बताता है।
तिहामर

सार्वजनिक स्थिर स्ट्रिंग displayAsciiCode (स्ट्रिंग s, बूलियन उपयोग मानक) {स्ट्रिंग r = ""; बाइट [] अस्सी = अशक्त; if (useStandard) {ascii = s.getBytes (StandardCharsets.US_ASCII); for (int i = 0; i <ascii.length; i ++) {बाइट b = ascii [i]; r = r + "" + s.charAt (i) + "=" + (int) b; }} और {ascii = s.getBytes (); for (int i = 0; i <ascii.length; i ++) {बाइट b = ascii [i]; r = r + "" + Character.toString ((char) ascii [i]) + "=" + (int) b; }} आर वापस; }
तिहामर

इसके साथ ऊपर कॉल करें: स्ट्रिंग स्ट्रिंग = "यह" "अजीब" है; System.out.println ("स्ट्रिंग्स =" + स्ट्रिंग); System.out.println (displayAsciiCode (string, true)); System.out.println (displayAsciiCode (string, false)); परिणाम यह है: तार = यह "अजीब" है = टी 84 टी = 84 आई = 104 आई = 105 एस = 115 = 32 "= 63 आई = 105 एस = 115" = 63 = 32 एस = 115 टी = 116 आर = 114 एक = 97 एन = 110 ग्राम = 103 ई = 101 टी = 84 एच = 104 आई = 105 एस = 115 = 32-= -30 ワ = -128 ワ = -100 i = 105 एस = 115 115 = -30 タ = -128ン = -99 = 32 एस = 115 टी = 116 आर = 114 ए = 97 एन = 110 जी = 103 ई = 101
तिहामर

10

यदि आप संपूर्ण स्ट्रिंग को संक्षिप्त ASCII मानों में बदलना चाहते हैं तो आप इसका उपयोग कर सकते हैं -

    String str = "abc";  // or anything else

    StringBuilder sb = new StringBuilder();
    for (char c : str.toCharArray())
    sb.append((int)c);

    BigInteger mInt = new BigInteger(sb.toString());
    System.out.println(mInt);

जिसमें आपको आउटपुट के रूप में 979899 मिलेगा।

करने के लिए क्रेडिट इस

मैंने इसे सिर्फ यहां कॉपी किया ताकि यह दूसरों के लिए सुविधाजनक हो।




2
public class Ascii {
    public static void main(String [] args){
        String a=args[0];
        char [] z=a.toCharArray();
        for(int i=0;i<z.length;i++){ 
            System.out.println((int)z[i]);
        }
    }
}

3
हालांकि यह कोड स्निपेट प्रश्न को हल कर सकता है, जिसमें स्पष्टीकरण सहित वास्तव में आपकी पोस्ट की गुणवत्ता में सुधार करने में मदद करता है। याद रखें कि आप भविष्य में पाठकों के लिए प्रश्न का उत्तर दे रहे हैं, और उन लोगों को आपके कोड सुझाव के कारणों का पता नहीं चल सकता है।
दिमासन

1

यह सरल है, जो चरित्र आप चाहते हैं, उसे प्राप्त करें और इसे इंट में बदलें।

String name = "admin";
int ascii = name.charAt(0);

1

मुझे पता है कि यह पहले ही कई रूपों में उत्तर दिया जा चुका है, लेकिन यहां सभी पात्रों के माध्यम से देखने के लिए एक बिट कोड है।

यहाँ कोड है, कक्षा के साथ शुरू किया गया है

public class CheckChValue {  // Class name
public static void main(String[] args) { // class main

    String name = "admin"; // String to check it's value
    int nameLenght = name.length(); // length of the string used for the loop

    for(int i = 0; i < nameLenght ; i++){   // while counting characters if less than the length add one        
        char character = name.charAt(i); // start on the first character
        int ascii = (int) character; //convert the first character
        System.out.println(character+" = "+ ascii); // print the character and it's value in ascii
    }
}

}


1
जावा के लिए stringऔर यूनिकोड का उपयोग करता है char। यूनिकोड में एक पाठ्य इकाई एक ग्रेपमे है, जो एक आधार कोडपॉइंट है जिसके बाद शून्य या अधिक संयोजन कोडपॉइंट्स होते हैं। जावा में एक कोडपॉइंट, UTF-16 में एन्कोड किया गया है, जिसमें charएक कोडपॉइंट के लिए एक या दो 16-बिट कोड यूनिट ( ) की आवश्यकता हो सकती है । कोडपॉइंट्स को पुनरावृत्त करने के लिए, यह उत्तर देखें । कोड पहले से ही ऊपर और आने वाले U + 1F91E HAND विद INDEX और MIDDLE फिंगर्स क्रॉस्ड कोड के लिए तैयार होना चाहिए, उदाहरण के लिए।
टॉम ब्लोडेट

1
String str = "abc";  // or anything else

// Stores strings of integer representations in sequence
StringBuilder sb = new StringBuilder();
for (char c : str.toCharArray())
    sb.append((int)c);

 // store ascii integer string array in large integer
BigInteger mInt = new BigInteger(sb.toString());
System.out.println(mInt);

हालांकि यह कोड प्रश्न का उत्तर दे सकता है, यह समझाने के लिए बेहतर है कि यह क्या करता है और इसमें कुछ संदर्भ जोड़ते हैं।
हामिद पूरजम

1
String name = "admin";
char[] ch = name.toString().toCharArray(); //it will read and store each character of String and store into char[].

for(int i=0; i<ch.length; i++)
{
    System.out.println(ch[i]+
                       "-->"+
                       (int)ch[i]); //this will print both character and its value
}

1

जैसा कि @Raedwald ने बताया, Java का यूनिकोड ASCII मान प्राप्त करने के लिए सभी वर्णों को पूरा नहीं करता है। सही तरीका (जावा 1.7+) इस प्रकार है:

byte[] asciiBytes = "MyAscii".getBytes(StandardCharsets.US_ASCII);
String asciiString = new String(asciiBytes);
//asciiString = Arrays.toString(asciiBytes)

new String(byte[])एक और चरित्र एन्कोडिंग का उपयोग करता है - तथाकथित सिस्टम डिफ़ॉल्ट, जो समय, मशीनों और उपयोगकर्ताओं में भिन्न होता है; लगभग कभी उपयोगी नहीं। आप जिसे asciiStringअभी भी यूटीएफ -16 कहते हैं , वह सब जावा के पास है।
टॉम ब्लोडेट

@TomBlodget, मैं सहमत हूं। लेकिन मुझे लगता है कि ओपी यह जानना चाहता था कि किसी दिए गए चरित्र का ASCIIrepretation कैसे प्राप्त किया जाए। यह सिर्फ एक एन्कोडिंग है क्योंकि जावा कच्चे ASCII नहीं कर सकता है
कार्तिक R

1

इसके लिए एक आसान तरीका है:

    int character = 'a';

यदि आप "वर्ण" प्रिंट करते हैं, तो आपको 97 मिलते हैं।


1

या आप 1 वर्ण के लिए स्ट्रीम एपीआई या जावा 1.8 में शुरू होने वाले स्ट्रिंग का उपयोग कर सकते हैं:

public class ASCIIConversion {
    public static void main(String[] args) {
        String text = "adskjfhqewrilfgherqifvehwqfjklsdbnf";
        text.chars()
                .forEach(System.out::println);
    }
}

1

जावा 9 => String.chars () का उपयोग करना

String input = "stackoverflow";
System.out.println(input.chars().boxed().collect(Collectors.toList()));

आउटपुट - [115, 116, 97, 99, 107, 111, 118, 101, 114, 102, 108, 111, 119]


0

आप इस कोड के साथ ASCII के नंबर की जांच कर सकते हैं।

String name = "admin";
char a1 = a.charAt(0);
int a2 = a1;
System.out.println("The number is : "+a2); // the value is 97

अगर मैं गलत हूं, माफी मांगता हूं।


0

यदि आप स्ट्रिंग में सभी वर्णों का ASCII मान चाहते हैं। आप इसका उपयोग कर सकते हैं:

String a ="asdasd";
int count =0;
for(int i : a.toCharArray())
    count+=i;

और यदि आप स्ट्रिंग में किसी एकल वर्ण का ASCII चाहते हैं, तो आप इसके लिए जा सकते हैं:

(int)a.charAt(index);

0

मैं एक ही बात की कोशिश कर रहा था, लेकिन सबसे अच्छा और आसान समाधान charAt का उपयोग करना होगा और अनुक्रमित तक पहुंचने के लिए हमें [128] आकार का पूर्णांक सरणी बनाना चाहिए।

String name = "admin"; 
int ascii = name.charAt(0); 
int[] letters = new int[128]; //this will allocate space with 128byte size.
letters[ascii]++; //increments the value of 97 to 1;
System.out.println("Output:" + ascii); //Outputs 97
System.out.println("Output:" +  letters[ascii]); //Outputs 1 if you debug you'll see 97th index value will be 1.

यदि आप पूर्ण स्ट्रिंग के एएससीआई मूल्यों को प्रदर्शित करना चाहते हैं, तो आपको ऐसा करने की आवश्यकता है।

String name = "admin";
char[] val = name.toCharArray();
for(char b: val) {
 int c = b;
 System.out.println("Ascii value of " + b + " is: " + c);
}

आपका आउटपुट, इस मामले में, यह होगा: एससीआई का मान है: 97 एससीआई का मूल्य है: 100 मीटर का एससीआई मूल्य है: 109 आईसिटी का i मूल्य है: 105 Ascii का मूल्य n है: 110


0

ऐसा करने का आसान तरीका है:

ASCII में पूरे स्ट्रिंग के लिए:


public class ConvertToAscii{
    public static void main(String args[]){
      String abc = "admin";
      int []arr = new int[abc.length()];
      System.out.println("THe asscii value of each character is: ");
      for(int i=0;i<arr.length;i++){
          arr[i] = abc.charAt(i); // assign the integer value of character i.e ascii
          System.out.print(" "+arr[i]);
      }
    }
}


आउटपुट है:

THe asscii value of each character is: 97 100 109 105 110


यहां, abc.charAt(i)स्ट्रिंग ऐरे का एकल वर्ण देता है: जब हम प्रत्येक वर्ण को पूर्णांक प्रकार को असाइन करते हैं, तो कंपाइलर रूपांतरण को टाइप करता है,

arr[i] = (int) character // Here, every individual character is coverted in ascii value

लेकिन, एकल चरित्र के लिए:

String name = admin; asciiValue = (int) name.charAt(0);// for character 'a' System.out.println(asciiValue);


0

इसके लिए हम स्ट्रैंग क्लैसेज़ का सीधे उपयोग कर सकते हैं

    input.codePointAt(index);

मैं एक और सुझाव देना चाहूंगा कि पूरे स्ट्रिंग को समान एससी कोड में परिवर्तित किया जा सकता है, उदाहरण के लिए जावा 8 का उपयोग करके, "एबेक्यू" से "979899100101"।

    String input = "abcde";
    System.out.println(
            input.codePoints()
                    .mapToObj((t) -> "" + t)
                    .collect(joining()));
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.