gpt4 book ai didi

java - 使用 Java 将任何文件转换为十六进制并再次转换回来

转载 作者:行者123 更新时间:2023-12-01 07:54:19 25 4
gpt4 key购买 nike

我有一些文件想要转换为十六进制,更改,然后再次反转,但我在尝试执行 jar、zip 和 rars 时遇到问题。它似乎只适用于包含正常可读文本的文件。我环顾四周,但找不到任何可以让 jar 或 bat 正确执行此操作的东西。有没有人有一个答案可以兼顾两者?转换为十六进制然后再转换回来,而不仅仅是十六进制?

最佳答案

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

这是一个实用程序类,可让您在二进制流与十六进制流之间相互转换:

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");
}
}
}

部分灵感来自this sample from Mykongthis answer .

关于java - 使用 Java 将任何文件转换为十六进制并再次转换回来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32174084/

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