C# - scrivere un file di char

venerdì 09 marzo 2012 - 17.48
Tag Elenco Tags  C#  |  .NET 2.0  |  .NET 3.0  |  .NET 3.5  |  Windows 7  |  Windows Vista  |  Windows XP  |  Visual Studio 2010  |  Visual Studio 2008

Pokino Profilo | Junior Member

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[]Ü|"

codice di test:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra


Avete delle idee?
grazie

freeteo Profilo | Guru

Ciao,
non so se ho capito bene quello che devi fare, ma io avendo dei numeri, farei direttamente il ToString() passando come parametro "X2" che sta a significare che lo vuoi in formato HEX.
StringBuilder sb = new StringBuilder(); ... int i = 123; //<--- esempio sb.Append(i.ToString("X2")); ...

Poi avendo magari in memoria la stringa come vedi nello StringBuilder (se non è troppo grande) puoi scrivere il file tutto in un colpo solo:
File.WriteAllText(...);

altrimenti, come stavi approcciando tu con uno Stream...

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5