Equivalence c/c#

lezabour55 Messages postés 22 Date d'inscription mercredi 27 octobre 2004 Statut Membre Dernière intervention 18 juillet 2006 - 4 août 2005 à 13:52
lezabour55 Messages postés 22 Date d'inscription mercredi 27 octobre 2004 Statut Membre Dernière intervention 18 juillet 2006 - 6 août 2005 à 14:27
Salut a tous,

Toujours dans ma recherche de transformation de prog C en C#, je
cherche a verifier la parfaite equivalence entre mon morceau de code C
et celui en C#.

Les resultats que j'obtiens sont quasi les memes mais pas exactement,
ce qui me fais dire que mon prog C# n'est pas encore bon...

Tout aide serait la bienvenue :)

EN C cela donne:


fscanf( infile, "%4c", prefix );

fscanf( infile, "%4c", &nChunkSize );

fscanf( infile, "%8c", fileFormat );

fscanf( infile, "%4c", &nChunkSize );

fscanf( infile, "%2c", &wFormatTag );

fscanf( infile, "%2c", &nChannels );

fscanf( infile, "%4c", &nSamplesPerSecond );

fscanf( infile, "%4c", &nAvgBytesPerSecond );

fscanf( infile, "%2c", &nBlockAlign );

fscanf( infile, "%2c", &nBitsPerSample );

fscanf( infile, "%4s", &ckID );

fscanf( infile, "%4c", &nChunkSize );



for( i = 0; (i < nChunkSize);i++ ) {

fscanf( infile, "%1c", &ch );

byteValue = ((float)ch-128)/128;

fprintf(outfile,"%g\n",byteValue);





L Equivalent(??) en C#

BinaryReader binReader = new BinaryReader(File.Open(fileName, FileMode.Open));

if(binReader.PeekChar() != -1)

{



prefix=binReader.ReadChars(4);



nChunkSize = binReader.ReadUInt32();



fileFormat = binReader.ReadChars(8);



nChunkSize2 = binReader.ReadUInt32();



wFormatTag = binReader.ReadUInt16();



nChannels = binReader.ReadUInt16();



nSamplesPerSecond = binReader.ReadUInt32();



nAvgBytesPerSecond = binReader.ReadUInt32();



nBlockAlign = binReader.ReadInt16();



nBitsPerSample = binReader.ReadInt16();



ckID = binReader.ReadChars(4);



nChunkSize3 = binReader.ReadUInt32();



}

StreamWriter monStreamWriter = new StreamWriter(fileName2);

char ch;

for(int i=0;i<nChunkSize;i++) {

ch=binReader.ReadChar();

byteValue = ((float)ch-128)/128;



monStreamWriter.WriteLine(byteValue);

Console.WriteLine("i:"+i);



}

binReader.Close();

monStreamWriter.Close();



Voila en gros ca lis les header dans mon fichier (Wav) et ca ecrit apres les frquences dans un fichiers RAW.

VOila les valeurs des variables n'est pas les memes entre les 2 programmes, de meme que le fichier RAW de sortie....

A mon avis le probleme viens de mes BinaryReader, avec les Int16-Int32....

Merci

21 réponses

lezabour55 Messages postés 22 Date d'inscription mercredi 27 octobre 2004 Statut Membre Dernière intervention 18 juillet 2006
6 août 2005 à 14:27
Bon je reviens ici en redemandant de l'aide!!! :(

J'arrive tjrs pas, mon programme bug tjrs pour la meme raison la boucle qui va trop loin...

tout aide est la bienvenue

merci
0
Rejoignez-nous