+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Byte e semibyte

  1. #1
    L'avatar di marco13
    marco13 non è in linea Scolaretto
    Post
    98

    Byte e semibyte

    Ciao a tutti!!
    Bando alle ciance, vengo subito al sodo:
    da una stringa s contenente dei valori
    codice:
    s = "09"
    devo estrarre ciascun carattere in formato esadecimale
    codice:
    s[0] = '0' -> 0x30
    s[1] = 'i' -> 0x39
    dopo di che devo fare un AND tra il carattere della stringa s e il valore 0x0F. Il risultato che voglio ottenere deve essere un AND a livello basso, cioè:
    codice:
    s[0] = 0x30 -> 00110000
                      AND
           0x0F -> 00001111
                   --------
                   00000000
    e così anche con s[1].
    Qui viene il bello: il risultato ottenuto con s[0] devo inserirlo in un primo semibyte e il risultato ottenuto con s[1] nel secondo semibite così de formare un byte.

    Qualcuno sapete consigliare cosa fare?devo agire a livello assembly così le operazioni risultano più semplici?
    Grazie
    Ciao
    Marco

  2. #2
    L'avatar di Gpanz
    Gpanz non è in linea Scolaretto
    Luogo
    Manduria
    Post
    327
    Prova a moltiplicare il risultato di s[1] con 2^4 (cioè 16) e successivamente sommare i due valori

    ciao

    PS: naturamente supponendo che tu abbia bisogno dei 4 bit meno significativi di ogni risultato

  3. #3
    L'avatar di marco13
    marco13 non è in linea Scolaretto
    Post
    98
    Grazie mille per l'interessamento, ma ti devo avvertire che ho già trovato una soluzione alternativa molto efficiente, ossia utilizzando le operazioni bitwise di Python:
    codice:
    def GetByte(b1, b2):
        b1 = b1&0x0F   #Primo byte & 0x0F
        b1 = b1 <<4    #Shift a sinistra di 4 del primo byte
        b2 = b2 & 0x0F #Secondo byte & 0x0F
        return b1 | b2   #Risultato operazione sul e primo byte in | del secondo byte
    Grazie
    Ciao
    Marco

+ Rispondi al Thread

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi