Differenze tra le versioni di "Ottenere un numero dalla sua memorizzazione in formato Little-Endian"

Da Gambas-it.org - Wikipedia.
(Creata pagina con "Il caso è quello in cui si intende convertire i dati di un valore, memorizzati in formato ''Little-Endian'' all'interno di un vettore di tipo ''Byte[ ]'', ottenendo così al...")
 
Riga 25: Riga 25:
 
   i += bb[2] * 65536        <FONT Color=gray>' ''&010000''</font>
 
   i += bb[2] * 65536        <FONT Color=gray>' ''&010000''</font>
 
   i += bb[3] * 16777216  <FONT Color=gray>' ''&01000000''</font>
 
   i += bb[3] * 16777216  <FONT Color=gray>' ''&01000000''</font>
 +
 
 +
  Print i
 +
 
 +
'''End'''
 +
 +
 +
 +
'''Public''' Sub Main()
 +
 +
  Dim bb As Byte[] = [&04, &03, &02, &01]
 +
  Dim i As Integer
 +
 
 +
  i = (bb[0] Or ((bb[1] * CInt(2 ^ 8)))) Or (bb[2] * CInt(2 ^ 16)) Or (bb[3] * CInt(2 ^ 24))
 
    
 
    
 
   Print i
 
   Print i
 
    
 
    
 
  '''End'''
 
  '''End'''

Versione delle 07:16, 21 feb 2016

Il caso è quello in cui si intende convertire i dati di un valore, memorizzati in formato Little-Endian all'interno di un vettore di tipo Byte[ ], ottenendo così al termine l'effettivo e reale numero corrispondente.


Porremo come esempio un vettore di tipo Byte[ ] di quattro elementi, contenente i seguenti valori: &04, &03, &02 e &01, che rappresentano in formato Little-Endian il numero decimale: 16909060. Per ottenere detto numero, potremo utilizzare alcune modalità:

Public Sub Main()

 Dim bb As Byte[] = [&04, &03, &02, &01]
 Dim i As Integer
 
  i = Int@(bb.Data)
  
  Print i
  
End


oppure:

Public Sub Main()

 Dim bb As Byte[] = [&04, &03, &02, &01]
 Dim i As Integer
  
  i = bb[0]
  i += bb[1] * 256            ' &0100
  i += bb[2] * 65536        ' &010000
  i += bb[3] * 16777216   ' &01000000
  
  Print i
  
End


Public Sub Main()

 Dim bb As Byte[] = [&04, &03, &02, &01]
 Dim i As Integer
  
  i = (bb[0] Or ((bb[1] * CInt(2 ^ 8)))) Or (bb[2] * CInt(2 ^ 16)) Or (bb[3] * CInt(2 ^ 24))
  
  Print i
  
End