Java:如何将二进制字符串转换为图像?

Java:如何将二进制字符串转换为图像?,java,image,binary,Java,Image,Binary,我目前正在开发一个工具,将图像转换为二进制字符串,反之亦然 要将图像转换为二进制,我使用以下方法: public void-toText(String-imagePath,String-textPath)抛出IOException{ BuffereImage image=ImageIO.read(新文件(imagePath)); ByteArrayOutputStream ByTestStream=新建ByteArrayOutputStream(); 写入(图像,“png”,ByTestStre

我目前正在开发一个工具,将图像转换为二进制字符串,反之亦然

要将图像转换为二进制,我使用以下方法:

public void-toText(String-imagePath,String-textPath)抛出IOException{
BuffereImage image=ImageIO.read(新文件(imagePath));
ByteArrayOutputStream ByTestStream=新建ByteArrayOutputStream();
写入(图像,“png”,ByTestStream);
byte[]bytes=byteStream.toByteArray();
PrintWriter writer=新的PrintWriter(新文件(textPath));
StringBuilder sb=新的StringBuilder();
for(字节b:字节){
sb.append(String.format(“%8s”,Integer.tobinarysting(b&0xFF)).replace(“”,'0');
}
写(某人写的东西);
writer.close();
}
.txt文件中的输出将如下所示:
“100010010101000001010011100100011000011010000101000011010000…”
我相信这个代码应该可以正常工作,如果我错了,请纠正我

现在我想将字符串转换回图像。为此,我编写了以下代码:

public void-toImage(String-imagePath,String-textPath)引发IOException{
BufferedReader=new BufferedReader(new FileReader(new File(textPath)));
字符串binary=reader.readLine();
reader.close();
byte[]bytes=新字节[binary.length()/8];
for(int i=0;i
此代码的问题是,例如,
“10001001”
大于
字节的最大大小(
137
)。这是因为
“10001001”
实际上应该使用2的补码表示法转换为值
-119

我怎样才能解决这个问题?我如何知道何时使用“正常”二进制表示,何时使用2的补码


谢谢。

你需要的是一面旗帜,上面写着这一点

A
0
用于不需要补码的数字

A
1
表示您所在位置的数字


或者换句话说,一个告诉你数字是正数还是负数的标志,这实际上是一个非签名数字的存储方式。

你需要的是一个告诉你这一点的标志

A
0
用于不需要补码的数字

A
1
表示您所在位置的数字

或者换句话说,一个标志告诉你数字是正数还是负数,这实际上是一个无符号数字的存储方式