web-dev-qa-db-ja.com

文字をに変換 ASCII Javaの数値

私はString name = "admin";を持っています
それから私はString char = name.substring(0,1); //char="a"をします

charをそのASCII値(97)に変換したいのですが、どうすればこれをJavaでできますか?

141
Celta

とても簡単です。 charintとしてキャストするだけです。

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.
232
SudoRahul

ちょっと違うアプローチ

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

bytes[0]は、..のASCII、したがって配列全体の他の文字を表します。

44
stinepike

これの代わりに:

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

charAt()メソッドを使うべきです。

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

Java文字はASCII文字ではないため、これを行う方法を示すことを目的としたいくつかの答えはすべて間違っています。 JavaはUnicode文字のマルチバイトエンコーディングを使用します。 Unicode文字セットは、ASCIIのスーパーセットです。そのため、Java文字列にはASCIIに属さない文字が含まれる可能性があります。そのような文字はASCII数値を持たないので、Java文字のASCII数値を取得する方法を尋ねることは避けられません。

しかし なぜ とにかくこれをやりたいですか?あなたはその価値と何をするつもりですか?

Javaの文字列をASCIIの文字列に変換できるように数値が必要な場合、 real の質問は「Java文字列をASCIIとしてエンコードする方法」です。そのためには、オブジェクト StandardCharsets.US_ASCII を使用してください。

10
Raedwald

文字列全体を連結された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が得られます。

これ へのクレジット。

他の人にとって便利になるようにここにコピーしただけです。

10
user1721904

Charをintに変換します。

    String name = "admin";
    int ascii = name.toCharArray()[0];

また:

int ascii = name.charAt(0);
4
Vineet Singla

Charをintにキャストするだけです。

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

numberの値は97になります。

2
Daniel Lerps
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
Sandeepp Sah

あるいは、Java 1.8以降では、1文字のStream APIまたはStringを使用できます。

public class ASCIIConversion {
    public static void main(String[] args) {
        String text = "adskjfhqewrilfgherqifvehwqfjklsdbnf";
        text.chars()
                .forEach(System.out::println);
    }
}
1
matua
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]);
        }
    }
}
1
yeswanth g

これを簡単に行う方法は次のとおりです。

    int character = 'a';

あなたが "文字"を印刷すると、あなたは97を得る。

1
ktlawal

それは簡単です、あなたが望む文字を取得して、それをintに変換してください。

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

@Raedwaldが指摘したように、JavaのUnicodeはASCII値を得るためにすべての文字に対応しているわけではありません。正しい方法は (Java 1.7+) です。

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

私はこれがいくつかの形ですでに答えられているのを知っています、しかしここにすべての文字を通り抜けようとしている私のコードのビットがあります。

これがクラスから始まるコードです。

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
gcclinux
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
iAsghar Hussain

私も同じことを試みていましたが、最も簡単で簡単な解決策は、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のASCII値を表示したい場合は、これを実行する必要があります。

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

この場合の出力は、次のようになります。aのASCII値は:97 dのASCII値は:100 mのASCII値は:109 iのascii値は:105 nのASCII値は:110

0

文字列内のすべての文字のASCII値が必要な場合。これを使うことができます:

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

文字列内の1文字のASCIIが必要な場合は、次のようにします。

(int)a.charAt(index);
0
Vikram Singh

このコードでASCIIの番号を確認できます。

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

私が間違っているならば、謝罪する。

0
Sin Nombre

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

これにはString classeのを使うことができます

    input.codePointAt(index);

Java 8を使用して、たとえば "abcde"から "979899100101"までのように、文字列全体を対応するASCIIコードに変換する方法についてもう1つ提案します。

    String input = "abcde";
    System.out.println(
            input.codePoints()
                    .mapToObj((t) -> "" + t)
                    .collect(joining()));
0
piyush tyagi