+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 6 su 6

Trasformare una matrice di Boolean in matrice di Byte

  1. #1
    L'avatar di luciano.net
    luciano.net non è in linea Scolaretto
    Ho una matrice di Boolean vBln(76800).
    Come posso fare per trasformarla in una matrice di byte vByte(9600), riportando per ciascun Byte 8 valori booleani della matrice di partenza?

    Luciano

  2. #2
    Forse ho capito ... ma non ne sono sicuro ...

    Se il vettore di boolean e' bl e quello di byte e' by, allora

        Dim i As Long
        Dim j As Long
        Dim k As Long
        
        k = 1
        For i = 1 To 76800 Step 8
            by(k) = 0
            For j = 0 To 7
                If bl(i + j) Then by(k) = by(k) Or 2 ^ j
            Next j
            k = k + 1
         Next i
    
    Per il verso di inserimento dei bit nel byte, puoi modificare tu il codice secondo quello che ti serve ...
    ℹ️ Leggi di più su AntonioG ...

  3. #3
    L'avatar di luciano.net
    luciano.net non è in linea Scolaretto
    La parte della formula
    by(k) Or 2 ^ j
    
    a prima vista non mi è molto chiara, anzi per niente.
    Cercherò di capirla meglio perchè non mi piace utilizzare codice che non comprendo.
    Mi serve anche la funzione inversa, da matrice di byte a matrice di bit, ma cercherò di farla da solo e se non mi riesce... mi rivedrete qui.

    Grazie.

    Luciano

  4. #4
    Non ho capito se il codice fa quello che volevi ...

    Comunque

    by(k) or 2 ^ j

    serve solamente a mettere a 1 il bit numero j, in cui j va da 0 a 7 ...

    Ovvero, se j e' uguale a 3, in quel modo il bit 3 verra' messo a 1.
    Questo perche'

    2 ^ 3

    e' uguale a 8 e viene eseguita l'operazione logica OR tra il precedente valore e 8 ...
    ℹ️ Leggi di più su AntonioG ...

  5. #5
    L'avatar di luciano.net
    luciano.net non è in linea Scolaretto
    Ora ho capito.
    La funzione è esattamente quella che mi occorreva, grazie.
    Luciano

  6. #6
    L'avatar di luciano.net
    luciano.net non è in linea Scolaretto
    Premesso che sto sviluppando in VB.NET e questo argomento è finito qui perchè non l'ho specificato prima, credo che la funzione inversa si possa facilmente ottenere con
    Dim vBit As BitArray = New BitArray(vByte)
    
    
    dove vByte è l'array di byte.

    A questo punto mi chiedo se non ci sia una maniera alrettanto semplice per trasformare l'array di bit in array di byte (la prima mia domanda).

    Attendo e intanto cerco...

    Luciano

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. [Matrice] Risultato Matrice da omettere SE...
    Da GaSe2004 nel forum Microsoft Excel
    Risposte: 1
    Ultimo Post: 09-10-2014, 19:08
  2. Risposte: 1
    Ultimo Post: 14-02-2013, 09:31
  3. Matrice
    Da henry63 nel forum Visual Basic 6
    Risposte: 7
    Ultimo Post: 26-12-2011, 09:50
  4. [C++]Matrice
    Da Kuschholo nel forum C/C++
    Risposte: 4
    Ultimo Post: 27-01-2008, 23:01
  5. [C++] Matrice
    Da ale9108 nel forum C/C++
    Risposte: 13
    Ultimo Post: 24-07-2006, 15:38