Hi,
ich bin neu hier im Forum und ich bin auch ein JAVA Anfänger. Also grundlagen in der Prorgrammierung behersche ich, aber viel mehr als einfache Taschenrechneroperationen kann ich nicht so einfach aus dem FF. Vor Allem bin ich noch etwas überwältigt mit den Möglichkeiten bei Java.
Nun mal zu meinem Problem. Ich will eine bestimmten Datenstrom neu formatieren bzw. konvertieren. Dafür ist nur eine einfache neu anordnung von Bits und Bytes notwendig. Dafür würde ich gerne Byteweise ein File lesen um es dann Byteweise wieder in eine neue Datei zuschreiben. Dabei werden nicht alle gelesenen Byte weiter verwendet und geschrieben. Ich hab bereits damit rum probiert ein File in ein Byte Array zu schreiben. Ich denke aber nicht, dass das klug für meine Anwendung ist, denn dann muss die ganze Datei erst in den Speicher geladen werde, bei großen Dateien ist das weniger schlau. Folgeden Code hab ich bereits geschrieben, ist aber nur ein Anfang.
Bleibe ich bei dieser Methode dann würde ich gerne wissen wie ich jewals 4 Byte aus dem Array lese und bearbeite. Hier mal der Pseudocode für die eigentlich Routine.
Ich hoffe finde hier Hilfe und Rat.
Danke schonmal,
Gruß m0nKeY
ich bin neu hier im Forum und ich bin auch ein JAVA Anfänger. Also grundlagen in der Prorgrammierung behersche ich, aber viel mehr als einfache Taschenrechneroperationen kann ich nicht so einfach aus dem FF. Vor Allem bin ich noch etwas überwältigt mit den Möglichkeiten bei Java.
Nun mal zu meinem Problem. Ich will eine bestimmten Datenstrom neu formatieren bzw. konvertieren. Dafür ist nur eine einfache neu anordnung von Bits und Bytes notwendig. Dafür würde ich gerne Byteweise ein File lesen um es dann Byteweise wieder in eine neue Datei zuschreiben. Dabei werden nicht alle gelesenen Byte weiter verwendet und geschrieben. Ich hab bereits damit rum probiert ein File in ein Byte Array zu schreiben. Ich denke aber nicht, dass das klug für meine Anwendung ist, denn dann muss die ganze Datei erst in den Speicher geladen werde, bei großen Dateien ist das weniger schlau. Folgeden Code hab ich bereits geschrieben, ist aber nur ein Anfang.
Java:
import java.io.*;
public class AES2WAVE {
public static void main(String[] args) throws Exception, IOException, UnsupportedEncodingException
{
String infile = "aes3.stream", outfile = "aes3.wav";
if ( args.length > 0 )
{
infile = args[0];
}
if ( args.length > 1 )
{
outfile = args[1];
}
File aes3 = new File(infile);
FileInputStream instream = new FileInputStream (aes3);
byte[] data = new byte[(int) aes3.length()];
instream.read(data);
instream.close();
for(int i = 0; i < aes3.length()/32; i++)
{
int channel = 8;
for(channel = 1; channel <= 8; channel++)
{
/* Hier muss die Routine für die Umrechnung rein */
}
}
System.out.println(new String(data, "UTF-8"));
}
}
Bleibe ich bei dieser Methode dann würde ich gerne wissen wie ich jewals 4 Byte aus dem Array lese und bearbeite. Hier mal der Pseudocode für die eigentlich Routine.
Java:
WriteWaveHeader()
For each sample of input data
{
For channel is 1 .. 8
{
Read 4 bytes from the source data
If channel is less than or equal to number of channels
{
If data is 16 bits
build a 16-bit word from source byte 2, top 4 bits,
followed by byte 3 bottom 4 bits, then byte 3 top 4 bits,
then byte 4 bottom 4 bits
If data is 24 bits
build a 24-bit word from source byte 1, top 4 bits,
followed by byte 2 bottom 4 bits, then byte 2, top 4 bits,
then byte 3 bottom 4 bits, then byte 3 top 4 bits,
then byte 4 bottom 4 bits
Write the new value to the output file
}
}
}
Ich hoffe finde hier Hilfe und Rat.
Danke schonmal,
Gruß m0nKeY