Differenze tra le versioni di "Ottenere un vettore di tipo Byte da una Stringa"

Da Gambas-it.org - Wikipedia.
(Creata pagina con 'Per generare un vettore (''array'') di tipo Byte[] dai caratteri contenuti in una Stringa, Gambas dispone di un apposito metodo, ''.FromString()'', appartenente alla Classe ''...')
 
 
(6 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
Per generare un vettore (''array'') di tipo Byte[] dai caratteri contenuti in una Stringa, Gambas dispone di un apposito metodo, ''.FromString()'', appartenente alla Classe ''Byte[]''.
+
Scrivere una stringa in un vettore di tipo "Byte[]", significa memorizzare ciascun carattere della stringa (secondo il rispettivo valore numerico ASCII) in un elemento della predetta variabile vettoriale.
  
La sua sintassi è:
+
Sono possibili almeno due possibilità:
FromString ( stringa As String ) As Byte[]
+
* con il Metodo ".FromString()" dei vettori di tipo "Byte[]";
La lunghezza del vettore creato è uguale alla lunghezza della Stringa così come ritornata dalla funzione ''Len()''.The length of the array is the length of the string as returned by Len.
+
* con i ''Memory Stream'' e la Proprietà ".Data" dei vettori di tipo "Byte[]" .
  
 
+
==Uso del Metodo ".FromString()"==
1° Esempio:
+
Gli array di tipo "Byte[]" dipongono di un apposito metodo per memorizzare i dati costituenti una stringa di caratteri, la cui sintassi è: <SUP>&#091;[[#Note|Nota 1]]&#093;</sup>
 
+
.FromString( String As String ) As Byte[]
  '''Public''' Sub Form_Open()
+
Di seguito mostriamo un semplice esempio:
+
  '''Public''' Sub Main()
 +
 
 +
  Dim bb As Byte[]
 
   Dim s As String
 
   Dim s As String
   bb As Byte[]
+
   Dim b As Byte
 
   
 
   
 +
  s = "Testo qualsiasi"
 +
 
 +
  bb = Byte[]<FONT Color=#B22222>.FromString</font>(s)
 +
 
 +
<FONT Color=gray>' ''Verifichiamo ora il contenuto del vettore "bb":''</font>
 +
  For Each b In bb
 +
    Print Hex(b); " = "; Chr(b)
 +
  Next
 
   
 
   
  s = "Stringa qualsiasi"
+
  <FONT Color=gray>' ''...oppure usando il Metodo ".To String()" del vettore":''</font>
+
  Print bb.ToString()
  bb = bb.FromString(s)
 
 
  <FONT color=gray>' ''E' possibile anche usare direttamente la Classe Byte[]:''
 
  bb = Byte[].FromString(s)</font>
 
 
   
 
   
 
  '''End'''
 
  '''End'''
  
 +
==Uso dei ''Memory Stream'' con la Proprietà ".Data" degli array==
 +
Le variabili vettoriali posseggono, fra le altre, anche la Proprietà ".Data" che restituisce un ''Puntatore'' all'area di memoria dell'oggetto vettore contenente i dati.
  
2° esempio:
+
E' possibile, dunque, utilizzare quel ''Puntatore'' per scrivere i dati di una stringa mediante i ''Memory Stream''. <SUP>&#091;[[#Note|Nota 2]]&#093;</sup>
In questo secondo esempio viene caricato, come valori stringa, un file qualsiasi con la funzione ''File.Load(...)'', e successivamente tali valori di tipo Stringa vengono convertiti subito in un vettore di tipo Byte[]:
+
 
   '''Public''' Sub Form_Open()
+
Mostriamo di seguito un semplice esempio:
+
   '''Public''' Sub Main()
 +
 
 +
  Dim bb As Byte[]
 
   Dim s As String
 
   Dim s As String
   bb As Byte[]
+
   Dim st As Stream
+
   Dim b As Byte
 
   s = File.Load("''/percorso/del/file''")
 
 
  bb = bb.FromString(s)
 
 
   
 
   
  <FONT color=gray>' ''E' possibile anche usare direttamente la Classe Byte[]:''
+
  s = "Testo qualsiasi"
  bb = Byte[].FromString(s)</font>
+
 
 +
  bb = New Byte[String.Len(s)]
 +
 
 +
  <FONT Color=gray>' ''Scriviamo la stringa nel vettore "bb":''</font>
 +
  st = Memory bb.Data For Write
 +
  Write #st, s
 +
  st.Close
 +
 
 +
<FONT Color=gray>' ''Verifichiamo ora il contenuto del vettore "bb":''</font>
 +
  For Each b In bb
 +
    Print Hex(b); " = "; Chr(b)
 +
  Next
 +
 
 +
<FONT Color=gray>' ''...o anche così, dereferenziando il "Puntatore":''</font>
 +
  Print String@(bb.Data)
 
   
 
   
 +
<FONT Color=gray>' ''...oppure usando il Metodo ".To String()" del vettore":''</font>
 +
  Print bb.ToString()
 +
 
 
  '''End'''
 
  '''End'''
 +
 +
 +
 +
=Suggerimenti=
 +
[1] Vedere anche questa pagina: [[Scrivere_in_un_vettore_i_dati_di_un_file#Caricare_in_un_vettore_di_tipo_.22Byte.5B.5D.22_i_dati_di_un_file_con_il_Metodo_.22File.Load.28.29.22|Caricare in un vettore di tipo "Byte[]" i dati di un file con il Metodo "File.Load()"]]
 +
 +
[2] Sulla scrittura (e lettura) dei dati di una variabile array, è possibile consultare anche la seguente pagina: [[Leggere e scrivere in un vettore mediante i Memory Stream]]

Versione attuale delle 07:37, 20 mag 2023

Scrivere una stringa in un vettore di tipo "Byte[]", significa memorizzare ciascun carattere della stringa (secondo il rispettivo valore numerico ASCII) in un elemento della predetta variabile vettoriale.

Sono possibili almeno due possibilità:

  • con il Metodo ".FromString()" dei vettori di tipo "Byte[]";
  • con i Memory Stream e la Proprietà ".Data" dei vettori di tipo "Byte[]" .

Uso del Metodo ".FromString()"

Gli array di tipo "Byte[]" dipongono di un apposito metodo per memorizzare i dati costituenti una stringa di caratteri, la cui sintassi è: [Nota 1]

.FromString( String As String ) As Byte[]

Di seguito mostriamo un semplice esempio:

Public Sub Main()
 
 Dim bb As Byte[]
 Dim s As String
 Dim b As Byte

 s = "Testo qualsiasi"
 
 bb = Byte[].FromString(s)
 
' Verifichiamo ora il contenuto del vettore "bb":
 For Each b In bb
   Print Hex(b); " = "; Chr(b)
 Next

' ...oppure usando il Metodo ".To String()" del vettore":
 Print bb.ToString()

End

Uso dei Memory Stream con la Proprietà ".Data" degli array

Le variabili vettoriali posseggono, fra le altre, anche la Proprietà ".Data" che restituisce un Puntatore all'area di memoria dell'oggetto vettore contenente i dati.

E' possibile, dunque, utilizzare quel Puntatore per scrivere i dati di una stringa mediante i Memory Stream. [Nota 2]

Mostriamo di seguito un semplice esempio:

 Public Sub Main()
 
 Dim bb As Byte[]
 Dim s As String
 Dim st As Stream
 Dim b As Byte

 s = "Testo qualsiasi"
 
 bb = New Byte[String.Len(s)]
 
' Scriviamo la stringa nel vettore "bb":
 st = Memory bb.Data For Write
 Write #st, s
 st.Close
 
' Verifichiamo ora il contenuto del vettore "bb":
 For Each b In bb
   Print Hex(b); " = "; Chr(b)
 Next
 
' ...o anche così, dereferenziando il "Puntatore":
 Print String@(bb.Data)

' ...oppure usando il Metodo ".To String()" del vettore":
 Print bb.ToString()
 
End


Suggerimenti

[1] Vedere anche questa pagina: Caricare in un vettore di tipo "Byte[]" i dati di un file con il Metodo "File.Load()"

[2] Sulla scrittura (e lettura) dei dati di una variabile array, è possibile consultare anche la seguente pagina: Leggere e scrivere in un vettore mediante i Memory Stream