2016-03-23 16 views
1

私は小さなJava RSA暗号化タスクを実行しています。ユーザ入力(スキャナから)を取得して入力全体をasciiに変換する方法

私は現在、ユーザー入力を取り込んですべてをasciiに変換するstringbuilderを使用していますが、asciiが完全な文字(a = 97)を暗号化してすべての文字を出力する必要がありますこのように(a = 097)。

どのようにこれを修正するか、またはこれにはより良い解決策がありますか?あなたの整数あなたは代わりのprintlnのSystem.out.formatを使用する必要があります先頭のゼロ

を追加するためのフォーマットされた文字列を印刷している探しているものを

String Secret; 

Scanner input = new Scanner(System.in); //opens a scanner, keyboard 
System.out.println("Please Enter what you want to encrypt: "); //prompt the user 
Secret = input.next(); //store the input from the user 

String str = Secret; // or anything else 

StringBuilder sb = new StringBuilder();// do 1 character at a time./convert each to ascii one at a time and then, have each2 values equate to 11 digit or "value" 
for (char c : str.toCharArray()) 
sb.append((byte)c);// bit array could be easier as this could make it difficult to decrypt 

    BigInteger m = new BigInteger(sb.toString()); 

System.out.println(m); 

答えて

0

。また

int a = 97; 
System.out.format("%03d%n",a); // --> "097" 

しかし、次のことができます。形式は、次のシグネチャ

public PrintStream format(Locale l, String format, Object... args) 

それとも、あなたはそのような何かを書くことができますJDK デフォルトロケールに

public PrintStream format(String format, Object... args) 

を使用しての方法ですCスタイル印刷方法

System.out.printf("%03d\n",a); // --> "097" 

これは多かれ少なかれ同じことを行います

String aWithLeadingZeros =String.format("%03d",a); 
System.out.println(aWithLeadingZeros); // --> "097" 

これはゼロの文字列をリードして3桁に各ASCIIコードをフォーマットしたStringBuffer

String secret = "hello world!"; // or anything else B) 
StringBuilder sb = new StringBuilder(); 
for (char c : secret.toCharArray()) { 
    // int casting wrap the char value 'c' to the corresponding ASCII code 
    sb.append(String.format("%03d",(int)c));       
} 
System.out.println(sb); // -> 104101108108111032119111114108100033 
// 'H' is 104, 'e' is 101, 'l' is 108, and so on..  
+0

にすべての文字列を追加する方法でありますこれは自動的に入力された文字を取り、正しい番号/番号を出力しますか? – Dusky

+0

印刷可能な任意の文字(対応するASCIIコード付き)は動作するはずです –

+0

あなたは私の救世主です!本当にありがとうございました。 – Dusky

関連する問題