Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 生成在终端内存上写入的随机代码_Java - Fatal编程技术网

Java 生成在终端内存上写入的随机代码

Java 生成在终端内存上写入的随机代码,java,Java,免责声明:我知道链接代码的编写、优化和文档记录都非常糟糕,但我只是为了好玩而胡闹,在我意识到它看起来在做什么之前,我根本没有打算发布它 在屏幕截图中,您将看到我正在运行的代码的副本(也在下面复制)以及我得到的一些输出-这就是我发布此内容的原因。在下面的代码中,我以前没有意识到,但它似乎已经在我的工作目录中写入了“@”和“~”(当输出输出输出到终端时发生了这种情况,而不是如该特定命令所示写入文档)。在进一步的测试中,我最终让它在第二个终端窗口中显示的输入缓冲区(?)中写入了一堆乱七八糟的内容(这似

免责声明:我知道链接代码的编写、优化和文档记录都非常糟糕,但我只是为了好玩而胡闹,在我意识到它看起来在做什么之前,我根本没有打算发布它

在屏幕截图中,您将看到我正在运行的代码的副本(也在下面复制)以及我得到的一些输出-这就是我发布此内容的原因。在下面的代码中,我以前没有意识到,但它似乎已经在我的工作目录中写入了“@”和“~”(当输出输出输出到终端时发生了这种情况,而不是如该特定命令所示写入文档)。在进一步的测试中,我最终让它在第二个终端窗口中显示的输入缓冲区(?)中写入了一堆乱七八糟的内容(这似乎是一个视觉故障,而不是写入输入缓冲区的文本,因为我可以直接在其上写入,按enter键将其视为一条空行)

有什么想法吗

//Prints out a bunch of random characters converted from binary (because why not)
//Originally intended just to convert binary to ASCII text but I got bored...
public class Test{
    public static void main(String[] args){
        String input = "";
//creates a bunch of random binary and writes it to input
            for(int i = 0; i < 10000; i++){
                for(int k = 0; k < 8; k++){
                    input += (int)(Math.random()*2);
                }
                input += " ";
            }
//splits binary into 8 bit chunks
        String[] eightBit = input.split(" ");

//binary -> int
        for(String i : eightBit){
            if(i.length() == 8){
                int value = 0;
                String[] oneBit = i.split("");
                for(int k = 0; k < 8; k++){
                    if(oneBit[k].equals("1")){
                        switch(k){
                            case 0:
                                value+=128;
                                break;
                            case 1:
                                value+=64;
                                break;
                            case 2:
                                value+=32;
                                break;
                            case 3:
                                value+=16;
                                break;
                            case 4:
                                value+=8;
                                break;
                            case 5:
                                value+=4;
                                break;
                            case 6:
                                value+=2;
                                break;
                            case 7:
                                value+=1;
                                break;
                            default:
                                break;
                        }
                    }
                }

                //int -> char
                System.out.print((char)value);
            }
        }
        System.out.println();
    }
}
//打印出一组从二进制转换而来的随机字符(因为为什么不打印)
//最初打算只是将二进制转换成ASCII文本,但我觉得很无聊。。。
公开课考试{
公共静态void main(字符串[]args){
字符串输入=”;
//创建一组随机二进制文件并将其写入输入
对于(int i=0;i<10000;i++){
对于(int k=0;k<8;k++){
输入+=(int)(Math.random()*2);
}
输入+=”;
}
//将二进制文件拆分为8位块
字符串[]eightBit=input.split(“”);
//二进制->整数
用于(字符串i:八位){
如果(i.长度()==8){
int值=0;
字符串[]一位=i.split(“”);
对于(int k=0;k<8;k++){
if(一位[k]。等于(“1”)){
开关(k){
案例0:
数值+=128;
打破
案例1:
数值+=64;
打破
案例2:
数值+=32;
打破
案例3:
数值+=16;
打破
案例4:
数值+=8;
打破
案例5:
数值+=4;
打破
案例6:
数值+=2;
打破
案例7:
数值+=1;
打破
违约:
打破
}
}
}
//int->char
系统输出打印((字符)值);
}
}
System.out.println();
}
}
我自己的测试输出如下:

编辑:是的。这只是一个复杂的噪音发生器,我在发布之前没有简化它。我的问题是,为什么产生随机噪声会导致写入终端/输入缓冲区中使用的内存。下面是噪声发生器的简化版本(它与二进制->噪声版本具有相同的感知效果)

公共类TestSimp{
公共静态void main(字符串[]args){
对于(int i=0;i<10000;i++){
系统输出打印((char)((int)(Math.random()*256));
}
System.out.println();
}
}
EDIT2:我继续测试,并在搜索写入输入缓冲区的内容时得到。在随机产生的噪音中似乎没有其他地方,这似乎很奇怪

以下是我用来生成该输出的代码(我必须按enter键尝试几次,直到获得链接输出):

import java.util.Scanner;
公共类TestSimp{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(系统输入);
字符串inputBuffer=“”;
做{
对于(int i=0;i<10000;i++){
系统输出打印((char)((int)(Math.random()*256));
}
System.out.println();
inputBuffer=in.nextLine();
}while(inputBuffer.equals(“”);
System.out.println(“--INPUT BUFFER--”);
System.out.println(输入缓冲区);
}
}

您正在标准输出上打印随机噪声。其中一些噪音肯定是会弄乱终端的控制字符。为什么代码中需要字符串<代码>值似乎只是一个介于0和255之间的随机整数。有很多不必要的转换和字符串拆分,我不确定它们是否添加了任何内容。@codebod作为评论和本文的标题都提到过,这只是我在胡闹。最初的项目仅仅是转换二进制->整数->ascii字符,但我对此感到厌倦,这就是为什么我创建了一个随机化器,但是是的,OP中的编辑应该是透明的。@FedericoklezCulloca我想这也是原因,我很好奇,到底是什么ASCII字符/组合允许终端中的随机输出在运行时写入其他地方使用的内存位置/输入缓冲区。我没有看到任何证据表明有任何东西是“写入其他地方使用的内存位置”。我所看到的只是向终端发送随机数据(包括随机控制码)的结果。如果你开始
cat
ing随机二进制文件,你会得到类似的损坏。你在标准输出上打印随机噪声。其中一些噪音肯定是会弄乱终端的控制字符。为什么代码中需要字符串<代码>值似乎只是一个介于0和0之间的随机整数
public class TestSimp{
    public static void main(String[] args){
        for(int i = 0; i < 10000; i++){
            System.out.print((char)((int)(Math.random()*256)));
        }
        System.out.println();
    }
}
import java.util.Scanner;
public class TestSimp{
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        String inputBuffer = "";
        do{
            for(int i = 0; i < 10000; i++){
                System.out.print((char)((int)(Math.random()*256)));
            }
            System.out.println();
            inputBuffer = in.nextLine();
        } while(inputBuffer.equals(""));
        System.out.println("--- INPUT BUFFER ---");
        System.out.println(inputBuffer);
    }
}