我试图写一个函数,将检查png文件是否损坏。在这里我发现了一个函数,下面也提供了这个函数,它将文件字节存储到自己的字节数组中。我知道png文件的前8个字节总是包含相同的十进制值137 80 78 71 13 10 26 10(十六进制:89 50 4e 47 0d 0a 1a 0a)。当我打印字节数组的上下文时 -1-40-1-3201674707370011007207200-1-370-124022222232235333565555686666681088888810101010101 ...
然后把它转换成小数,我在开头看不到幻数。拜托,我误解了什么?我想读的图像和比较它的头或十进制或十六进制值。
public static void main(String[] args)
{
File file = new File("src/resources/dog.png");
readContentIntoByteArray(file);
}
private static byte[] readContentIntoByteArray(File file)
{
FileInputStream fileInputStream = null;
byte[] bFile = new byte[(int) file.length()];
try
{
//convert file into array of bytes
fileInputStream = new FileInputStream(file);
fileInputStream.read(bFile);
fileInputStream.close();
for (int i = 0; i < bFile.length; i++)
{
System.out.print((char) bFile[i]);
}
}
catch (Exception e)
{
e.printStackTrace();
}
return bFile;
}
1条答案
按热度按时间dphi5xsq1#
您正在将实际字节作为字符打印到终端,而不是像@andreas所说的那样,以十进制或十六进制表示这些字节。
您可以通过以下方式检查标题: