一个while循环遍历一个字符串,一次接受8个字符的子字符串,获取每个字符的ASCII码并将每个字节转换为其二进制表示,作为8个字符所以(8 * 8)数组,每8个字符,这里是代码:
消息文件包含:1234567800000008
所以 while 循环运行两次,因为有 16 个字符,代码运行正确,直到在最后一个 for 循环的输入块中输入二进制值。当我在数组列表中添加输入块时,当我再次从数组列表中获取()它们时,它们不是相同的值
while(Message.length() != 0){
substr=Message.substring(0, 8);
bytes = substr.getBytes("ASCII");
int[][] inputblock = new int[bytes.length][bytes.length];
for(int i=0; i<bytes.length;i++){
binString =Integer.toBinaryString(bytes[i]);
while (binString.length() < 8) {binString = "0" + binString;}
for(int j=0; j<bytes.length;j++){
int x=Character.digit(binString.charAt(j), 2);
inputblock[i][j] = x;
}
}
input.add(inputblock); //// This is supposed to add each 64 bit (8*8)
Message=Message.replace(substr, ""); //Array to arraylist input.
System.out.print(substr + "+");
}
出于某种原因,当我打印arraylist 的内容时,它打印出不是二进制表示的实际字符.. 我不知道为什么?
输出内容
for (int i =0;i<input.size();i++){
int[][] tmp = input.get(i);
for(int j=0;j<input.size();j++){
System.out.print(tmp[i][j]); }
System.out.print("\n");
}
输出:12345678+00000008+00 00