জাভাতে অক্ষরকে ASCII সংখ্যাসূণ্যে রূপান্তর করুন


174

আমার String name = "admin";
তখন আছেString char = name.substring(0,1); //char="a"

আমি charএর ASCII মান (97) এ রূপান্তর করতে চাই, জাভাতে আমি কীভাবে এটি করতে পারি?


2
জেডাব্লু String charকখনই সংকলন করবে । আপনি কি ভেরিয়েবলটির নাম পরিবর্তন করতে চানString ch
বিকাশ প্রসাদ

হওয়া ASCII? আপনি কি নিশ্চিত যে এটি চান? জাভা ইউনিকোড অক্ষর সেট (যেমন জাভাস্ক্রিপ্ট,। নেট, ভিবিএ, ভিবি 4/5/6, এনসিএইচআর, এনভিচারার, এনটিএফএস, উইন্ডোজ এপিআই,…) এর ইউটিএফ -16 অক্ষর এনকোডিং ব্যবহার করে। উত্তরগুলি বিভিন্ন বিভাগে পড়ে: ASCII সম্পর্কে স্পষ্টভাবে উত্তর দেওয়া, ইউটিএফ -16 সম্পর্কে জবাব দেওয়া এবং ইউটিএফ -16 থেকে বেশ কয়েকটি শর্টকাট লিপের মাধ্যমে ASCII সম্পর্কে জবাব দেওয়া (এবং কিছুটি কেবল সাধারণ ভুল)।
টম ব্লডজেট

উত্তর:


296

খুব সহজ. শুধু আপনার charহিসাবে castালাই 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.

যদিও castালাই স্পষ্টভাবে প্রয়োজন হয় না, তবে এটি পঠনযোগ্যতার উন্নতি করে।

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

4
@ ভি কেসিঙ্গলা - এটির প্রয়োজনীয় নয় বলে স্বীকার করেছেন তবে এটি পাঠযোগ্যতার উন্নতি করে এবং ওপিকে বুঝতে সহায়তা করবে।
সুডোরাহুল

1
আরেকটি চর ভেরিয়েবল কেন তৈরি করবেন? এমনকি যদি আপনি castালাই চান তবে কেন এইভাবে করবেন না? int ascii = (int)name.charAt(0);
রিকার্ডো ক্যাচিরা

@ আরজে - ঠিক আছে আমি এটি সম্পর্কে চিন্তাও করি নি
রিকার্ডো ক্যাচিরা

9
ASCII অক্ষরগুলির 0 থেকে 127 পর্যন্ত 7-বিট কোড রয়েছে So সুতরাং কোন int ব্যবহার করার দরকার নেই। বাইট পুরোপুরি যে কোনও কোড সঞ্চয় করতে পারে।
ইয়াহোর

আমি ইন্টারকে চরে রূপান্তর করতে চেয়েছিলাম, কাস্ট ইঙ্গিতটি উত্তর থেকে অন্য পথে এটি করতে আমাকে সহায়তা করেছিল।
ইসিড্রো সেরানো

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 সংখ্যার মান থাকে না, সুতরাং জাভা চরিত্রের ASCII সংখ্যাসূচক মান কীভাবে পাওয়া যায় তা জিজ্ঞাসা করা যায় না।

কিন্তু কেন আপনি এই যাহাই হউক না কেন কাজ করতে চান না? আপনি মান দিয়ে কি করতে যাচ্ছেন?

আপনি যদি সংখ্যার মানটি চান তবে আপনি জাভা স্ট্রিংকে একটি এএসসিআইআই স্ট্রিংয়ে রূপান্তর করতে পারেন, আসল প্রশ্নটি "আমি কীভাবে জাভা স্ট্রিংকে ASCII হিসাবে এনকোড করব"। তার জন্য, অবজেক্টটি ব্যবহার করুন StandardCharsets.US_ASCII


2
নিখুঁত উত্তর. প্রকারের ingালাই কেবল একটি শর্ট-কাট যা সঠিক নয়। আপনার উত্তরটি শুরুতেই খুশি হয়েছিল যাতে লোকেরা ধারণাটিকে ভুল বোঝে না।
কার্তিক আর

আমার ASCII স্ট্রিংটি জানা দরকার কারণ হ'ল আমি ইউনিকোড ডেটা পেয়েছি ব্যাকএন্ড প্রক্রিয়াতে আসার জন্য যেখানে খাঁটি এএসসিআইআই অন্য কোথাও রাখা দরকার, এবং যখন আমি নন-ইউনিকোড পাচ্ছি তখন আমার দরকার ছিল। সাধারণত যখন ব্যবহারকারীরা এমএস ওয়ার্ড থেকে কপি করা হয় (যেমন বাঁকা ডাবল এবং একক উদ্ধৃতি, দীর্ঘ ড্যাশ ইত্যাদি)। স্ট্যান্ডার্ডচারেটস উল্লেখ করার জন্য USউস_এএসসিআইআই হ'ল সঠিক জিনিস, তবে এটি কীভাবে এটি ব্যবহার করতে হয় তা মূল প্রশ্নকর্তাকে বলে না।
তিহামার

পাবলিক স্ট্যাটিক স্ট্রিং ডিসপ্লেএসিআইকোড (স্ট্রিংস, বুলিয়ান ইউজ স্ট্যান্ডার্ড) {স্ট্রিং আর = ""; বাইট [] ascii = নাল; যদি (ইউজস স্ট্যান্ডার্ড) {ascii = s.getBytes (স্ট্যান্ডার্ডচ্যারসেটস ইউএস_এএসসিআইআই); (int i = 0; i <ascii.length; i++) {বাইট বি = আসকি [i]; r = r + "" + s.charAt (i) + "=" + (ইনট) বি; }} অন্য {ascii = s.getBytes (); (int i = 0; i <ascii.length; i++) {বাইট বি = আসকি [i]; r = r + "" + চরিত্র.তো স্ট্রিং ((চর) ascii [i]) + "=" + (অন্তর্) খ; }} রিটার্ন আর; }
তিহামার

উপরের সাথে কল করুন: স্ট্রিং স্ট্রিং = "এটি" "অদ্ভুত"; System.out.println ("স্ট্রিংস =" + স্ট্রিং); System.out.println (displayAsciiCode (স্ট্রিং, ট্রু)); System.out.println (displayAsciiCode (স্ট্রিং, মিথ্যা)); ফলাফলটি: স্ট্রিংস = এটি "হ'ল" আজব টি = 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 আমি = 105 এস = 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

আমি জানি এটি ইতিমধ্যে বেশ কয়েকটি ফর্মের জবাব দেওয়া হয়েছে তবে সমস্ত অক্ষরের মধ্য দিয়ে যাওয়ার জন্য আমার কোড কোডটি এখানে রয়েছে।

এখানে ক্লাস দিয়ে শুরু করা কোড

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। ইউনিকোডের একটি পাঠ্য ইউনিট একটি গ্রাফিম, যা শূন্য বা আরও বেশি সংমিশ্রিত কোডপয়েন্টের পরে একটি বেস কোডপয়েন্ট। জাভাতে একটি কোডপয়েন্ট, ইউটিএফ -16 এ এনকোড করা হয়েছে, যার charকোডপয়েন্টের জন্য এক বা দুটি 16-বিট কোড ইউনিট ( ) প্রয়োজন হতে পারে । কোডপয়েন্টগুলি পুনরাবৃত্তি করতে, এই উত্তরটি দেখুন । কোডটি ইতিমধ্যে ইন্ডেক্স এবং মিডিল ফিঙ্গার্স ক্রসড কোডডপয়েন্টের সাথে আপ এবং আগত ইউ + 1F91E এর জন্য প্রস্তুত হওয়া উচিত।
টম ব্লডজেট

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

@ রেডওয়াল্ড যেমন উল্লেখ করেছেন, জাভার ইউনিকোড ASCII মান পেতে সমস্ত অক্ষর পূরণ করে না। সঠিক উপায় (জাভা 1.7+) নিম্নরূপ:

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

new String(byte[])আরও একটি অক্ষর এনকোডিং ব্যবহার করেছে - তথাকথিত সিস্টেম ডিফল্ট, যা সময়, মেশিন এবং ব্যবহারকারীদের মধ্যে পরিবর্তিত হয়; প্রায় কখনও দরকারী। আপনি যা কল করেন asciiStringতা এখনও ইউটিএফ -16, কারণ এটাই সব জাভাতে রয়েছে।
টম ব্লডজেট

@ টমব্লডজেট, আমি সম্মত তবে আমি মনে করি ওপি কোনও প্রদত্ত চরিত্রের ASCII বিবৃতি পেতে কীভাবে জানতে চেয়েছিল। এটি ঠিক একটি এনকোডিং যা জাভা কাঁচা ASCII করতে পারে না
কার্তিক আর

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 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

আমি একই জিনিসটি চেষ্টা করছিলাম, তবে সর্বোত্তম এবং সহজ সমাধান হ'ল চারআউট ব্যবহার করা এবং সূচীগুলি অ্যাক্সেস করার জন্য আমাদের [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.

যদি আপনি সম্পূর্ণ স্ট্রিংয়ের ascii মান প্রদর্শন করতে চান তবে আপনার এটি করা দরকার।

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 এর এসকি মান হ'ল: 105 এর এন এর আসকি মান: 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);

আমি জাভা using ব্যবহার করে উদাহরণস্বরূপ "অ্যাবসিডি" "" 979899100101 "তে পুরো স্ট্রিংটিকে সংশ্লিষ্ট এসকি কোডগুলিতে রূপান্তর করতে আরও একটি পরামর্শ দিতে চাই।

    String input = "abcde";
    System.out.println(
            input.codePoints()
                    .mapToObj((t) -> "" + t)
                    .collect(joining()));
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.