Ich wollte mal versuchen, per BufferedInputStream eine Binärdatei lesen, und den Inhalt Hexadezimal ausgeben. Hab mir zum vergleichen Hexeditor besorgt. An sich fun st es ja recht gut, nur manchmal komme ich auf negative Zahlen, wobei dann irgend ein Mist wie z. B. "ffffff89" statt 89 rauskommt. Man könnte es sicher leicht verändern, aber es gibt sicher auch eine Möglichkeit wo ich nicht eingreifen muss.
Mir ist dann eingefallen, dass Byte ja Signed ist. Aber BufferedInputStream unterstützt nur Bytes, und 127/8 addieren hat nichts gebracht. Kann mir wer bitte sagen, wie ich die Zahlen auf rein positive Werte bekomme?
Mir ist dann eingefallen, dass Byte ja Signed ist. Aber BufferedInputStream unterstützt nur Bytes, und 127/8 addieren hat nichts gebracht. Kann mir wer bitte sagen, wie ich die Zahlen auf rein positive Werte bekomme?
Java:
package core;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
public final class Main extends Object
{
public Main()
{
super();
}
public final static void main(String[] args)
{
Main.fileRead(1024);
}
private final static void fileRead(int bufferlenght)
{
BufferedInputStream in = null;
try
{
in = new BufferedInputStream(
new FileInputStream(
new File("C:\\Neu Bitmap (7).PNG")));
if(bufferlenght <= 0)
bufferlenght = 1024;
byte[] buffer = new byte[bufferlenght];
while(in.read(buffer) > -1)
for(int i = 0; i < buffer.length; i++)
System.out.print(Integer.toHexString((int)buffer[i]).concat(" "));
}
catch(Exception e)
{
e.printStackTrace();
}
finally
{
if(in == null)
return;
try
{
in.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
}