Differenze tra le versioni di "Assegnare ciascuna cifra di un numero a un elemento di un vettore di tipo Byte"
Da Gambas-it.org - Wikipedia.
Riga 43: | Riga 43: | ||
− | + | Public Sub Main() | |
Dim bb As New Byte[4] | Dim bb As New Byte[4] |
Versione attuale delle 04:36, 10 giu 2024
Il caso è quello in cui si intende assegnare ciascuna cifra, da cui è composto un numero, a un elemento di una variabile vettoriale di tipo Byte[ ].
Così ad esempio, se il numero è "1234" e la variabile vettoriale è vett[4], vorremo assegnare:
- la cifra "1" del numero al primo elemento del vettore vett[0];
- la cifra "2" del numero al primo elemento del vettore vett[1];
- la cifra "3" del numero al primo elemento del vettore vett[2];
- la cifra "4" del numero al primo elemento del vettore vett[3].
Proponiamo due modalità: una usando le sole risorse di Gambas, l'altra la funzione esterna sprintf( ) della libreria C.
Uso delle sole risorse di Gambas
In questo caso potremo usare un codice simile al seguente:
Public Sub Main() Dim bb As New Byte[4] Dim b As Byte Dim i As Integer i = 1234 bb = Byte[].FromString(CStr(i)) For b = 0 To bb.Max ' Poiché in ogni elemento del vettore sono stati salvati i codici ASCII dei simboli numerici, per ottenere i numeri delle cifre, che componevano il numero intero, dobbiamo sottrarre a ciascun codice ASCII il valore "48": bb[b] = bb[b] - 48 Next ' Verifichiamo il risultato: For Each b In bb Print b Next End
Uso della funzione esterna "sprintf()" della libreria C
In quast'altro caso potremo usare un codice simile al seguente:
Library "libc:6" ' int sprintf (char *__restrict __s, const char *__restrict __format, ...) ' Write formatted output to S. Private Extern sprintf(__s As Pointer, __formats As String, n As Integer) As Integer Public Sub Main() Dim bb As New Byte[4] Dim b As Byte sprintf(bb.Data, "%d", 1234) For b = 0 To bb.Max ' Poiché in ogni elemento del vettore sono stati salvati i codici ASCII dei simboli numerici, per ottenere i numeri delle cifre, che componevano il numero intero, dobbiamo sottrarre a ciascun codice ASCII il valore "48": bb[b] = bb[b] - 48 Next ' Verifichiamo il risultato: For Each b In bb Print b Next End