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