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.
(Creata pagina con "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...") |
|||
Riga 4: | Riga 4: | ||
− | Mostriamo un | + | Mostriamo un semplice esempio pratico: |
Library "libc:6" | Library "libc:6" | ||
Versione delle 18:37, 16 lug 2016
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 memoia del vettore: swab(bb1.Data, bb2.Data, 10) For Each b In bb2 Print b, Next End