Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Difficoltà con il linguaggio C (operazioni sui bit)

    nLen è una variabile che contiene la dimensione di un certo array. nLen si calcola così:


    codice:
    nLen unsigned short int 2 total length of escaped send block ((including nLen)<<2
    | 0x2001)
    001L LLLL LLLL LL01 (x=reserved, L = Length)

    ma non capisco cosa significa. Gentilmente me lo potete spiegare voi?

  2. #2
    In effetti è un po' ambiguo, ma prova così:
    codice:
    len =  (nLen >> 2) & 0x1FFC;

  3. #3
    Ti ringrazio della risposta. Ora provo subito.
    Devo comunque tradurre la cosa in Delphi.

    Esattamente cosa significa eseguire la riga che mi hai indicato?

  4. #4
    Ho visto che il valore della lunghezza si trova tra il 3 bit ed il 13 bit:
    001L LLLL LLLL LL01

    e ho cercato di estrarlo; quindi ho messo in and con 0x1FFC (0010 1111 1111 1100):
    001L LLLL LLLL LL01 &
    0010 1111 1111 1100 =
    --------------------------------------
    000L LLLL LLLL LL00

    e poi shift a destra di due:
    000L LLLL LLLL LL00 >>
    2 =
    ---------------------------------------
    0000 0LLL LLLL LLLL

    P.S.: ho corretto perchè mi sono accorto di aver sbagliato; la versione corretta è:
    codice:
    len = (nLen & 0x1FFC) >> 2;

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.