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的补码
谢谢。你需要的是一面旗帜,上面写着这一点
A0
用于不需要补码的数字
A1
表示您所在位置的数字
或者换句话说,一个告诉你数字是正数还是负数的标志,这实际上是一个非签名数字的存储方式。你需要的是一个告诉你这一点的标志
A0
用于不需要补码的数字
A1
表示您所在位置的数字
或者换句话说,一个标志告诉你数字是正数还是负数,这实际上是一个无符号数字的存储方式