Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [VB.NET] Conversione da stringa ad array di bytes
Forum - C# / VB.NET - [VB.NET] Conversione da stringa ad array di bytes

Avatar
Dedalux (Member)
Pro


Messaggi: 103
Iscritto: 15/12/2010

Segnala al moderatore
Postato alle 14:21
Giovedì, 18/08/2011
Ciao a tutti,
ho bisogno di convertire una stringa in un array di bytes, per poi scrivere questo array in un file.

Ho provato ad utilizzare questo codice:
Codice sorgente - presumibilmente C# / VB.NET

  1. Dim uenc As New UnicodeEncoding
  2.         IO.File.WriteAllBytes("C:\PTF.txt", uenc.GetBytes("PieroTofy"))



però se vado ad aprire il file con un hex editor, GetBytes ha diviso i vari caratteri con un carattere nullo in Hex 00, e aprendolo appunto con notepad tutti i caratteri sono divisi da un carattere nullo, simile allo spazio.
Come devo fare per non avere questi byte nulli?

grazie


«La disumanità del computer sta nel fatto che, una volta programmato e messo in funzione, si comporta in maniera perfettamente onesta.»

Isaac Asimov
PM
Avatar
manvb.net (Member)
Guru


Messaggi: 663
Iscritto: 28/01/2008

Up
0
Down
V
Segnala al moderatore
Postato alle 15:59
Giovedì, 18/08/2011
Usa AsciiEncoding al posto di UnicodeEncoding.

PS. Ma qual è l'utilità di convertire una stringa in un array di byte prima di scriverla su file?

Ultima modifica effettuata da manvb.net il 18/08/2011 alle 15:59


"E' facile distruggere, la vera sfida è creare!"(cit. me)

"Ricordati chi sei, non permettere a nessuno di cambiarti, non perdere mai te stesso. Farai grandi cose nella vita."(cit. me)

double penetration; //ouch
PM
Avatar
walker93 (Member)
Expert


Messaggi: 460
Iscritto: 31/01/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 16:14
Giovedì, 18/08/2011
manvb ha ragione...
forse avrai le tue ragioni, ma vuoi scrivere del testo su un file di testo(.txt) convertendolo in array di byte

il suggerimento di man è gusto però vi ricordo che c'è la possibilità di usare la funzione WriteAllText al posto di WriteAllBytes potendo anche specificare l'encoding...

Appunto, mi chiedevo come mai facesse WriteAllBytes invece disare direttamente WriteAllText. Magari avrà qualche esigenza particolare(tipo modificare i byte). - manvb.net - 18/08/11 20:39
dedalux è in gamba, avrà le sue buone ragioni...noi quello che potevamo fare lo abbiamo fatto... - walker93 - 18/08/11 21:03
il fatto che l'abbia salvato in txt è solo perchè è un formato che legge "direttamente" i bytes, sto creando una classe che unisce vari files in un file solo, ed ho bisogno di inserire del testo negli headers dei vari files. AsciiEncoding non scrive bytes nulli, però ha un problema con i caratteri - Dedalux - 18/08/11 21:19
in quanto la codifica ASCII non comprende nemmeno le semplici lettere accentate.. Per fare un'esempio scrivendo GetBytes("òçà°ù§") su un txt, appaiono ?????? - Dedalux - 18/08/11 21:23
mi sa che la soluzione è una stupidaggine. Non ci avevo pensato che la U di UTF sta per Unicode, quindi la codifica UTF8 va benissimo, però vorrei capire perchè con UnicodeEncoding mi crea quei bytes vuoti. Insomma, credo di poter dire problema risolto, ma nuova domanda. Testo e vi faccio sapere. - Dedalux - 18/08/11 23:12
I caratteri unicode hanno due byte di grandezza(65536 caratteri possibili) mentre i caratteri ASCII sono da un byte l'uno(256 caratteri). Quei bytes vuoti non sono altro che "un pezzo" di carattere Unicode. - manvb.net - 18/08/11 23:18
Risolto. Grazie ragazzi. - Dedalux - 18/08/11 23:37


Il software è come il sesso, è meglio quando è libero.
Linus Torvalds, Conferenza della Free Software Foundation, 1996 (attribuito)

Non provare mai a spiegare il computer a un profano. È più facile spiegare il sesso a una vergine.
Robert Anson Heinle
PM