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

Da Gambas-it.org - Wikipedia.
 
(Una versione intermedia di uno stesso utente non è mostrata)
Riga 1: Riga 1:
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>
+
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 13: Riga 13:
 
Per conoscere i singoli byte esadecimali che compongono un numero, è possibile adottare alcune modalità.
 
Per conoscere i singoli byte esadecimali che compongono un numero, è possibile adottare alcune modalità.
  
===Uso della funzione ''Shr( )''===
+
===Uso della funzione "Shr()"===
  '''Public''' Sub Main()
+
  Public Sub Main()
 
   
 
   
  Dim i As Integer
+
  Dim i As Integer
 
      
 
      
 
   i = 123456
 
   i = 123456
Riga 25: Riga 25:
 
   Print Hex(i And &FF, 2)
 
   Print Hex(i And &FF, 2)
 
   
 
   
  '''End'''
+
  End
  
  
 
===Uso di un Puntatore===
 
===Uso di un Puntatore===
  '''Public''' Sub Main()
+
  Public Sub Main()
 
    
 
    
  Dim c, i As Integer
+
  Dim c, i As Integer
  Dim p As Pointer
+
  Dim p As Pointer
 
    
 
    
 
   i = 123456
 
   i = 123456
Riga 42: Riga 42:
 
   Next
 
   Next
 
    
 
    
  '''End'''
+
  End
  
  
  
 
----
 
 
=Note=
 
=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.
+
[1]  Durante la scrittura del valore in memoria, con riferimento alla quantità di byte comunque da occupare, viene tenuto conto ovviamente anche del "''tipo'' " di valore dichiarato.

Versione attuale delle 16:24, 1 lug 2024

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 comunque da occupare, viene tenuto conto ovviamente anche del "tipo " di valore dichiarato.