61 messaggi dal 25 settembre 2006
ciao a tutti,
ho un problemone da risolvere in merito alla scrittura di un file.
Devo creare un file che contenga dei numeri da 0 a 999 scritti ognuno su 2 byte con il primo più significativo, cioè:
1 = 00 01
220 = 00 DC
eccetera

Il problema è che non sono assoultamente riuscito, ho provato ad usare uno streamwriter ( e prima un binarywriter ) ma non ottengo assolutamente gli stessi dati, anzi numeri che non mi spiego.
Se apro il file destinazione in notepad++ devo vedere formato=ansi e convertendolo in hex-16 i valori scritti come spiegato sopra.

Qualcosa di sensato lo ottengo in memoria se faccio una codifica specificando
UnicodeEncoding enc = new UnicodeEncoding(true, false);
enc.GetBytes(c);


ottenendo: byte[4] = 0 / 1 / 0 / 220

però se scrivo sul file tutto mi perde di significato:
"000000000 53 79 73 74 65 6D 2E 42-79 74 65 5B 5D 01 C3 9C |System.Byte[]Ü|"

Avete delle idee?
grazie

ps:
FileStream fs = new FileStream(@"c:\test.prg", FileMode.Create, FileAccess.Write, FileShare.None);

            UInt16 ui1 = 1;
            char ch1 = Convert.ToChar(ui1);
            UInt16 ui2 = 220;
            char ch2 = Convert.ToChar(ui2);
            UnicodeEncoding enc = new UnicodeEncoding(true, false);
            char[] c = new char[2];
            c[0] = ch1;
            c[1] = ch2;

            using (StreamWriter sw = new StreamWriter(fs))
            {
                sw.Write(enc.GetBytes(c));
                sw.Write(c);
            }
Se quello che vuoi scrivere nel file è codice binario, allora scrivi codice binario, cioè:
FileStream fs = new FileStream(@"c:\test.prg", FileMode.Create, FileAccess.Write, FileShare.None);

fs.Write(new byte[] {0,1,0,220},0,4);

Se invece vuoi scrivere del testo che sia esadecimale, allora come hai fatto te da testo lo converti in byte secondo un encoding, ma poi in notepad++ i byte sarano la codifica del testo esadecimale in byte.

Ciao

Il mio blog
Homepage

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.