Differenze tra le versioni di "Distinguere ogni byte della rappresentazione esadecimale di un valore decimale"

Da Gambas-it.org - Wikipedia.
 
Riga 1: Riga 1:
Ogni valore numerico può essere rappresentato in varie modalità (decimale, esadecimale, ottale, etc).
+
Ogni valore numerico può essere rappresentato in varie modalità (decimale, esadecimale, ottale, etc). Quando un numero viene salvato in memoria, vengono scritti in ciascuna cella i singoli valori che insieme costituiscono il valore numerico salvato. <SUP>&#091;[[#Note|Nota 1]]&#093;</sup>
  
 
Così, se ad esempio il valore decimale iniziale è ''123456'', i singoli byte della corrispondente sua rappresentazione esadecimale sono ''00|01|E2|40'':
 
Così, se ad esempio il valore decimale iniziale è ''123456'', i singoli byte della corrispondente sua rappresentazione esadecimale sono ''00|01|E2|40'':
Riga 43: Riga 43:
 
    
 
    
 
  '''End'''
 
  '''End'''
 +
 +
 +
 +
 +
----
 +
=Note=
 +
[1]  Durante la scrittura del valore in memoria, con riferimento alla quantità di byte comunqueda occupare, viene tenuto conto ovviamente anche del "''tipo''" di valore dichiarato.

Versione attuale delle 03:03, 30 mag 2017

Ogni valore numerico può essere rappresentato in varie modalità (decimale, esadecimale, ottale, etc). Quando un numero viene salvato in memoria, vengono scritti in ciascuna cella i singoli valori che insieme costituiscono il valore numerico salvato. [Nota 1]

Così, se ad esempio il valore decimale iniziale è 123456, i singoli byte della corrispondente sua rappresentazione esadecimale sono 00|01|E2|40:

Indicesingolo byte
[0] <- 00
[1] <- 01
[2] <- E2
[3] <- 40


Per conoscere i singoli byte esadecimali che compongono un numero, è possibile adottare alcune modalità.

Uso della funzione Shr( )

Public Sub Main()

 Dim i As Integer
   
  i = 123456

  Print Hex(Shr(i And &FF000000&, 24), 2);;
  Print Hex(Shr(i And &FF0000&, 16), 2);;
  Print Hex(Shr(i And &FF00&, 8), 2);;
  Print Hex(i And &FF, 2)

End


Uso di un Puntatore

Public Sub Main()
 
 Dim c, i As Integer
 Dim p As Pointer
 
  i = 123456
   
  p = VarPtr(i)
   
  For c = 3 To 0 Step -1
    Print Hex(Byte@(p + c), 2);;
  Next
  
End




Note

[1] Durante la scrittura del valore in memoria, con riferimento alla quantità di byte comunqueda occupare, viene tenuto conto ovviamente anche del "tipo" di valore dichiarato.