0

ちょっと変わった質問があります (まだ尋ねられて回答されていないことを願っています)。最初に、私がやろうとしていることの順序と方法を説明し、次にどこで問題が発生しているかを説明します。

  1. 文字列を ASCII 数値に変換する
  2. これらの ASCII 数値をバイナリに変換し、文字列に格納します
  3. それらの 2 進数を ASCII 番号に変換します
  4. ASCII 数字を通常の文字に変換します

これまでに書いたメソッドは次のとおりです。

public static String strToBinary(String inputString){

    int[] ASCIIHolder = new int[inputString.length()];

    //Storing ASCII representation of characters in array of ints
    for(int index = 0; index < inputString.length(); index++){
        ASCIIHolder[index] = (int)inputString.charAt(index);
    }


    StringBuffer binaryStringBuffer = new StringBuffer();

    /* Now appending values of ASCIIHolder to binaryStringBuffer using
     * Integer.toBinaryString in a for loop. Should not get an out of bounds
     * exception because more than 1 element will be added to StringBuffer
     * each iteration.
     */
    for(int index =0;index <inputString.length();index ++){

        binaryStringBuffer.append(Integer.toBinaryString
                (ASCIIHolder[index]));
    }


    String binaryToBeReturned = binaryStringBuffer.toString();

    binaryToBeReturned.replace(" ", "");

    return binaryToBeReturned;
}

public static String binaryToString(String binaryString){

    int charCode = Integer.parseInt(binaryString, 2);

    String returnString = new Character((char)charCode).toString();

    return returnString;
}

コードを実行すると NumberFormatException が発生します。これは、プログラムが 2 進数を個別の文字としてではなく、1 つの完全な 2 進数として変換しようとしていることが原因だと思います。ここに表示されている内容に基づいて、これを全体的に行うためのより良い方法はありますか、および/またはバイナリコードを反復処理するときにコンピュータに ASCII 文字を認識するように指示するにはどうすればよいですか? それが明確であることを願っています。そうでない場合は、コメントを確認します。

4

2 に答える 2

1

そのため、OP のコードにいくつかの変更を加えて使用しましたが、私にとっては非常にうまく機能します。将来の人のためにここに投稿します。OPはおそらく過去2年間でそれを理解したので、OPはもう必要ないと思います。

public class Convert
    {
    public String strToBinary(String inputString){

    int[] ASCIIHolder = new int[inputString.length()];

    //Storing ASCII representation of characters in array of ints
    for(int index = 0; index < inputString.length(); index++){
        ASCIIHolder[index] = (int)inputString.charAt(index);
    }

    StringBuffer binaryStringBuffer = new StringBuffer();

    /* Now appending values of ASCIIHolder to binaryStringBuffer using
     * Integer.toBinaryString in a for loop. Should not get an out of bounds
     * exception because more than 1 element will be added to StringBuffer
     * each iteration.
     */
    for(int index =0;index <inputString.length();index ++){

        binaryStringBuffer.append(Integer.toBinaryString
                (ASCIIHolder[index]));
    }

    String binaryToBeReturned = binaryStringBuffer.toString();

    binaryToBeReturned.replace(" ", "");

    return binaryToBeReturned;
}

public String binaryToString(String binaryString){
    String returnString = "";
    int charCode;
    for(int i = 0; i < binaryString.length(); i+=7)
    {
    charCode = Integer.parseInt(binaryString.substring(i, i+7), 2);
    String returnChar = new Character((char)charCode).toString();
    returnString += returnChar;
    }
    return returnString;
}
}

ほとんどのことを書いてくれたOPに感謝します。エラーを修正することは、新しいコードを書くよりもはるかに簡単です。

于 2015-03-19T03:40:58.803 に答える