Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.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,我有一些文件,我想转换成十六进制,改变,然后再次反转,但我有一个问题,试图做罐,拉链,和rars。它似乎只适用于包含正常可读文本的文件。我环顾了四周,但找不到任何能让罐子或蝙蝠正确操作的东西。有没有人有一个答案可以同时做到这两个方面?转换为十六进制,然后再返回,而不仅仅是转换为十六进制?您可以将任何文件转换为十六进制。只需获取一个字节流,并将每个字节映射到两个十六进制数 下面是一个实用程序类,可用于将二进制流转换为十六进制流,然后再转换: import java.io.BufferedReade

我有一些文件,我想转换成十六进制,改变,然后再次反转,但我有一个问题,试图做罐,拉链,和rars。它似乎只适用于包含正常可读文本的文件。我环顾了四周,但找不到任何能让罐子或蝙蝠正确操作的东西。有没有人有一个答案可以同时做到这两个方面?转换为十六进制,然后再返回,而不仅仅是转换为十六进制?

您可以将任何文件转换为十六进制。只需获取一个字节流,并将每个字节映射到两个十六进制数

下面是一个实用程序类,可用于将二进制流转换为十六进制流,然后再转换:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.Writer;

public class Hex {
    public static void binaryToHex(InputStream is, OutputStream os) {
        Writer writer = new BufferedWriter(new OutputStreamWriter(os));

        try {
            int value;

            while ((value = is.read()) != -1) {
                writer.write(String.format("%02X", value));
            }

            writer.flush();
        } catch (IOException e) {
            System.err.println("An error occurred");
        }
    }

    public static void hexToBinary(InputStream is, OutputStream os) {
        Reader reader = new BufferedReader(new InputStreamReader(is));

        try {
            char buffer[] = new char[2];

            while (reader.read(buffer) != -1) {
                os.write((Character.digit(buffer[0], 16) << 4)
                        + Character.digit(buffer[1], 16));
            }
        } catch (IOException e) {
            System.err.println("An error occurred");
        }
    }
}
导入java.io.BufferedReader;
导入java.io.BufferedWriter;
导入java.io.IOException;
导入java.io.InputStream;
导入java.io.InputStreamReader;
导入java.io.OutputStream;
导入java.io.OutputStreamWriter;
导入java.io.Reader;
导入java.io.Writer;
公共类十六进制{
公共静态void binarythex(InputStream是,OutputStream os){
Writer Writer=new BufferedWriter(new OutputStreamWriter(os));
试一试{
int值;
而((value=is.read())!=-1){
write.write(String.format(“%02X”,value));
}
writer.flush();
}捕获(IOE异常){
System.err.println(“发生错误”);
}
}
公共静态void hexToBinary(InputStream is,OutputStream os){
Reader Reader=新的BufferedReader(新的InputStreamReader(is));
试一试{
字符缓冲区[]=新字符[2];
while(读卡器读取(缓冲区)!=-1){

write((Character.digit(buffer[0],16)您可以将任何文件转换为十六进制。只需获取一个字节流,并将每个字节映射到两个十六进制数即可

下面是一个实用程序类,可用于将二进制流转换为十六进制流,然后再转换:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.Writer;

public class Hex {
    public static void binaryToHex(InputStream is, OutputStream os) {
        Writer writer = new BufferedWriter(new OutputStreamWriter(os));

        try {
            int value;

            while ((value = is.read()) != -1) {
                writer.write(String.format("%02X", value));
            }

            writer.flush();
        } catch (IOException e) {
            System.err.println("An error occurred");
        }
    }

    public static void hexToBinary(InputStream is, OutputStream os) {
        Reader reader = new BufferedReader(new InputStreamReader(is));

        try {
            char buffer[] = new char[2];

            while (reader.read(buffer) != -1) {
                os.write((Character.digit(buffer[0], 16) << 4)
                        + Character.digit(buffer[1], 16));
            }
        } catch (IOException e) {
            System.err.println("An error occurred");
        }
    }
}
导入java.io.BufferedReader;
导入java.io.BufferedWriter;
导入java.io.IOException;
导入java.io.InputStream;
导入java.io.InputStreamReader;
导入java.io.OutputStream;
导入java.io.OutputStreamWriter;
导入java.io.Reader;
导入java.io.Writer;
公共类十六进制{
公共静态void binarythex(InputStream是,OutputStream os){
Writer Writer=new BufferedWriter(new OutputStreamWriter(os));
试一试{
int值;
而((value=is.read())!=-1){
write.write(String.format(“%02X”,value));
}
writer.flush();
}捕获(IOE异常){
System.err.println(“发生错误”);
}
}
公共静态void hexToBinary(InputStream is,OutputStream os){
Reader Reader=新的BufferedReader(新的InputStreamReader(is));
试一试{
字符缓冲区[]=新字符[2];
while(读卡器读取(缓冲区)!=-1){

os.write((字符.数字(缓冲区[0],16)不要使用
读取器来读取
字符串
/
字符
/
字符[]
,使用
输入流
来读取
字节
/
字节[]

不要使用
读取器
来读取
字符串
/
/
/
字符[/code>]
,使用
输入流
读取
字节
/
字节[]

这是正确的。+1…但请注意,通过更改随机字节,您将损坏几乎所有的非文本文件。@Robby Cornelissen我尝试过的这段代码,但enter被转换为..,这无助于我将其转换回..。@Robby,OP希望将其转换为十六进制,将其更改并转换回。@moocw9M示例代码有十六进制和文本输出。Y您只需要十六进制输出。@Codebender我不会随机输出。这是正确的。+1…但请注意,通过更改随机字节,您将损坏几乎所有的非文本文件。@Robby Cornelissen我尝试过的这段代码,但enter被转换为..,这无助于我将其转换回。@Robby,OP希望转换为十六进制、alter和convert返回。@Moocow9m示例代码有十六进制和文本输出。您只需要十六进制输出。@Codebender我不会随机执行它。是“无法将某些文件转换为十六进制吗?”您的整个问题吗?@immibis否不是。是“无法将某些文件转换为十六进制吗?”您的整个问题吗?@immibis否不是。