Convertire in un tipo di dati numerico un valore letto in formato Stringa da un file

Da Gambas-it.org - Wikipedia.

Il caso in oggetto è quello in cui viene caricato in memoria in formato String (ad esempio mediante il Metodo "File.Load( )"), un file, tra i dati del quale vi sono anche quelli che rappresentano un numero. Lo scopo è quello di estrapolare i byte di dati attinenti a quel numero, di mostrare in console il numero, e di memorizzare quei byte in una variabile del tipo coerente con la quantità di quei medesimi byte che rappresentano il numero.

Per chiarire, poniamo ad esempio che un file contenga i byte costituenti il numero 10000 (diecimila), posti in mezzo ad altri byte di dati; ad esempio così:

01 01 10 27 00 00 02 02 02 02

I 4 byte di dati, colorati in rosso, sono quelli relativi al valore 10000, che sono stati lì memorizzati in ordine little-endian. Essendo 4 i byte, costituenti il numero, si dovrà, dunque, convertire quei byte, caricati come dati stringa, nel tipo Intero (Integer).

Possiamo adottare almeno tre brevi modalità, utilizzando la funzione di dereferenziazione relativa al tipo di dati da ottenere:

Public Sub Main()
 
 Dim s As String
 Dim i As Integer
 Dim bb As Byte[]
 
  s = File.Load("/percorso/del/file")
  
' Qui usiamo la funzione "Mid()" per estrarre dalla stringa di dati i soli valori-byte attinenti al numero 10000:
  i = Int@(Mid(s, 3, 4))
  Print i   
  
' Qui usiamo la funzione "VarPtr()" per gestire la stringa mediante il suo indirizzo di memoria,
' e per estrarre dalla stringa di dati i soli valori-byte attinenti al numero 10000: 
  i = Int@(VarPtr(s) + 2)
  Print i
  
' Qui usiamo sfruttiamo l'area di memoria di un vettore di tipo "Byte[]" mediante il suo indirizzo di memoria
' restituito dalla proprietà ".Data", e per estrarre dalla stringa di dati i soli valori-byte attinenti al numero 10000:
  bb = Byte[].FromString(s)
  Print Int@(bb.Data + 2)
  
End