gpt4 book ai didi

java - Java 中从字符串到 ASCII 到二进制再到 ASCII 到字符串

转载 作者:行者123 更新时间:2023-12-01 15:14:34 24 4
gpt4 key购买 nike

我有一个奇怪的问题(我希望还没有被问到和回答)。首先,我将告诉您我要做的事情的顺序以及我是如何做的,然后告诉您我在哪里遇到了问题:

  1. 将字符串转换为 ASCII 数字
  2. 将这些 ASCII 数字转换为二进制并将其存储在字符串中
  3. 将这些二进制数字转换回 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 异常,我认为这是因为程序试图将二进制数字转换为一个完整的二进制数字,而不是单独的字母。根据您在这里看到的内容,是否有更好的方法来完成此任务和/或如何告诉计算机在迭代二进制代码时识别 ASCII 字符?希望这是清楚的,如果不是,我会检查评论。

最佳答案

所以我使用了 OP 的代码并进行了一些修改,它对我来说非常有效。我会将其发布在这里供 future 的人使用。我认为 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 为我写了大部分内容。修复错误比编写新代码容易得多。

关于java - Java 中从字符串到 ASCII 到二进制再到 ASCII 到字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11812110/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com