Convertire i valori di tipo Byte di un vettore in valori di tipo Stringa

Da Gambas-it.org - Wikipedia.

Gambas, per convertire i valori di tipo Byte contenuti in una variabile vettoriale (array) in valori di tipo Stringa, mette a disposizione il Metodo .ToString().

La sua sintassi è:

.ToString( [ Inizio As Integer, Lunghezza As Integer ] ) As String

laddove Inizio è l'indice del primo byte da cui cominciare la conversione. Esso è di default uguale a zero. Lunghezza è il numero di byte da convertire. Di default è fino all'ultimo byte del vettore.


Esempio:

Public Sub Main()

 Dim bb As Byte[] = [97, 98, 99, 10, 100, 101, 102]
 Dim s As String
   
   s = bb.ToString(0, bb.Count)   |1|

   Print s

End


Modalità alternativa a .ToString() dereferenziando la proprietà .Data con la specifica funzione String@( )

Per ottenere i valori contenuti da una variabile vettoriale di tipo Byte[] in formato Stringa, si può dereferenziare il Puntatore restituito dalla proprietà .Data appartenente a tali variabili.


Esempio:

Public Sub Main()

 Dim bb As Byte[] = [97, 98, 99, 10, 100, 101, 102]
 Dim s As String
 
     s = String@(bb.Data)

     Print s

End


Ottenere da un vettore di tipo Byte[] i soli dati ASCII utili di testo diversi dal valore &h00 (Null)

Se il vettore di tipo Byte[] contiene una stringa di caratteri alfanumerici e di altro tipo (spazi bianchi, di ritorno, etc.) seguiti da almeno un valore &h00, come ad esempio la parola "Gambas" seguita da tre valori &h00:

47 61 6D 62 61 73 00 00 00
 G  a  m  b  a  s

per ottenere la sola parte testuale, ossia i soli caratteri "Gambas" si possono usare le modalità già viste nei paragrafi precedenti.

Usando il Metodo .ToString( ) della Classe array del tipo Byte[]. In questo caso si cerca la posizione del primo valore Null (&h00) per fermare la lettura un carattere prima.

bb.ToString(0, bb.Find(&h00)) As String

oppure usando la funzione di dereferenziazione String@( ):

String@(bb.Data) As String



Note

[1] Come è possibile notare, la funzione .ToString() agevola il compito che potrebbe essere effettuato con la funzione Chr() su ciascun elemento del vettore, usando, però, un ciclo:

 Public Sub Main()

 Dim vettore As Byte[] = [97, 98, 99, 10, 100, 101, 102]
 Dim s As String
 Dim i As Integer
 
  For i = 0 To vettore.Max
    s &= Chr(vettore[i])
  Next

  Print s

End