Visualizzazione risultati 1 fino 6 di 6

Discussione: [C] passare da long int a due variabili int

  1. #1
    Guest

    Question [C] passare da long int a due variabili int

    Ciao a tutti, sto scrivendo un programma in C per programmare un pic.
    Ho un problema che non riesco a risolvere. In una funzione mi arriva una variabile tipo long int (chiamata data), io ho bisogno di shiftarla a sinistra di 2 bit e poi di memorizzare i bit da 15 a 8 in una variabile di tipo int chiamata datah e i bit da 7 a 0 li devo memorizzare in un'altra variabile di tipo int.
    io ho provato così:
    Codice:
    long int data =0x03ff; //bit da 0 a 9 posti a 1
    unsigned int datah, datal;
    
    datah = data>>2;
    datal=data>>10;
    Purtroppo non funziona, mi escono valori senza senso.
    Qualcuno può aiutarmi?

  2. #2
    L'avatar di binarysun
    binarysun non è connesso Utente storico
    Data registrazione
    02-07-2004
    Messaggi
    2,017

    Predefinito

    Converti il valore in stringa, lo dividi in due e riconverti le due stringhe in interi
    "L'intelligenza è una pianta che va curata continuamente.
    Dovreste vedere com'è bello, il mio bonsai."
    Rat-man®

    [Gradient Text]
    [Su che server sei?]
    ->flickr

  3. #3
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Hai scritto "shiftare a sinistra", ma poi fai uno shift a destra di 2 posizioni - una delle due cose è sbagliata

    @binarysun: chiamare in causa le stringhe è overkill per questa cosa.

  4. #4
    Guest

    Predefinito

    Citazione Originalmente inviato da dreadnaut Visualizza messaggio
    Hai scritto "shiftare a sinistra", ma poi fai uno shift a destra di 2 posizioni - una delle due cose è sbagliata

    @binarysun: chiamare in causa le stringhe è overkill per questa cosa.
    Più che altro dovrebbe hashare la stringa su N byte per poterla poi flaggare come ricorsiva.


    Ciao!

  5. #5
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Se non ricordo male dovrebbe essere così:
    Codice:
    long data = ...; // numero di partenza
    
    unsigned int data_l = (data & 0x00FF);
    unsgined int data_h = (unsigned int) ((data & 0xFF00) >> 8);
    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  6. #6
    L'avatar di binarysun
    binarysun non è connesso Utente storico
    Data registrazione
    02-07-2004
    Messaggi
    2,017

    Predefinito

    Avevo letto Splitarla in due
    "L'intelligenza è una pianta che va curata continuamente.
    Dovreste vedere com'è bello, il mio bonsai."
    Rat-man®

    [Gradient Text]
    [Su che server sei?]
    ->flickr

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •