Differenze tra le versioni di "Invertire l'ordine nelle coppie di byte dell'area di memoria di un vettore con la funzione esterna swab()"

Da Gambas-it.org - Wikipedia.
 
Riga 12: Riga 12:
 
   
 
   
 
   
 
   
  '''Public''' Sub Main()
+
  Public Sub Main()
 
    
 
    
 
   Dim b As Byte
 
   Dim b As Byte
Riga 18: Riga 18:
 
   Dim bb2 As New Byte[10]
 
   Dim bb2 As New Byte[10]
 
    
 
    
  bb1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
+
  bb1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
 
      
 
      
 
  <FONT Color=gray>' ''Invertiamo la posizione di ciascun blocco di due dati adiacenti all'interno dell'area di memoria del vettore:''</font>
 
  <FONT Color=gray>' ''Invertiamo la posizione di ciascun blocco di due dati adiacenti all'interno dell'area di memoria del vettore:''</font>
  swab(bb1.Data, bb2.Data, 10)
+
  swab(bb1.Data, bb2.Data, 10)
 
      
 
      
  For Each b In bb2
+
  For Each b In bb2
    Print b,
+
    Print b,
  Next
+
  Next
 
    
 
    
  '''End'''
+
  End
 
 
  
  

Versione attuale delle 04:19, 10 giu 2024

La funzione esterna swab( ), dichiarata nel file header /usr/include/unistd.h, copia un'area di memoria in un'altra, invertendo però la posizione dei dati in ciascuna coppia di byte adiacenti presenti nell'area medesima. Il blocco di dati coinvolto, dunque, è composto da 2 byte (16 bit).

E' necessario richiamare in Gambas la libreria dinamica condivisa: "libc.so.6"


Mostriamo un semplice esempio pratico:

Library "libc:6"

' void swab (const void *__restrict __from, void *__restrict __to, ssize_t __n)
' Swab pairs bytes in the first N bytes of the area pointed to by FROM and copy the result to TO.
Private Extern swab(__from As Pointer, __to As Pointer, __n As Long)


Public Sub Main()
 
 Dim b As Byte
 Dim bb1 As Byte[]
 Dim bb2 As New Byte[10]
 
 bb1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
   
' Invertiamo la posizione di ciascun blocco di due dati adiacenti all'interno dell'area di memoria del vettore:
 swab(bb1.Data, bb2.Data, 10)
   
 For Each b In bb2
   Print b,
 Next
  
End


Riferimenti