我创建了一个程序,它接受用户输入并将其转换为char数组。然后它将数组中的每个char转换为它的相应字节值,并将它们全部打印在一行中。
我现在正在创建第二个程序,我希望能够将该行字节作为用户输入粘贴到其中,然后让它以ASCII(英文)显示原始消息
到目前为止,这是我的代码:
import java.util.Scanner;
public class MessageDecoder
{
public static void main(String[] args)
{
System.out.println("Please enter your encrypted message and press Enter: ");
Scanner reader = new Scanner(System.in);
byte b = reader.nextByte();
}
}
我尝试将字节行连接成一个String,就像这个
System.out.println(b + "");
但那(可能显然)没有用。
我需要做什么?
答案 0 :(得分:1)
试试
System.out.println((char)b);
但是根据你的评论,据我所知,你已经用数字“加密了你的字符”,因此A变为65(2字节6和5)。 “解密”这个问题就是你丢失了信息。 AA = 6565(这也可能是char 6 char 5 ecc)。所以你需要的是一个系统来理解它是如何分组的。
解决方法A设置为固定(至少3个字符,因为字节最大值为256)这意味着A变为065
解决方案B使用seperatore(文件es.EOT(char)5中不存在。
如果解决方案A要解读输入(也作为字符串),那么你将3个字符循环3个字符,转换为整数 - >施放到char并且你得到了原始的char。
解决方案B,可能更简单,您可以在输入字符串上使用拆分功能
String[] stringArray = input.split(char)5);
然后循环播放每个字符串
int result = Integer.parseInt(stringArray[i]).
char c = (char)result;
我没有给你所有的代码,但我希望它有所帮助
答案 1 :(得分:0)
也许你需要这个:
System.out.println("Please enter your encrypted message and press Enter: ");
Scanner reader = new Scanner(System.in);
String val = reader.nextLine();
char[] buffer = val.toCharArray();
byte[] b = new byte[buffer.length];
for (int i = 0; i < b.length; i++) {
System.out.println(Integer.toBinaryString((byte) buffer[i] & 255 | 256).substring(1));
}
答案 2 :(得分:0)
以下是我的意思
希望这有帮助!