Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    260

    [C#] Troncare valore da int a byte

    Ciao a tutti.
    Ho la necessita' di fare una conversione da int(32 o 16 bit, non è importante) a byte(8 bit).
    Il mio problema è che spesso viene lanciata un OverFlowException(Valore troppo grande o troppo piccolo per un Unsigned Byte) perchè il mio valore int è maggiore di 255(valore max di un byte).
    Questo accade dopo un shiftamento nel mio intero a sinistra di un numero di bit.
    Esempio:

    byte b= 176 .... in binario: 10110000

    b<<6 , b= 11264 > 255!! ... in binario: 101100 | 00000000

    In questo caso a me vanno bene tutti gli 8 bit piu' a destra a zero e gli altri a sinistra da buttare...

    altro esempio:

    byte c= 129 .... in binario: 10000001

    c<<6 , c= 8256 > 255!! ... in binario: 100000 | 01000000

    Come potrei fare??

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Usa un intero a 16 bit e prendi la parte bassa del risultato.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    260
    metto il mio valore che non sta dentro un byte in un intero e poi richiamo la seguente funzione che mi ritorna il byte che mi serve.

    codice:
    private byte truncateValue(int tmp) 
            {
                string binTmp=Convert.ToString(tmp, 2);
                binTmp = binTmp.Substring(binTmp.Length - 8, 8);
                byte byteTmp=Convert.ToByte( Convert.ToInt32(binTmp, 2));
                return byteTmp;
            }

  4. #4
    codice:
    byte tuoByte=123;
    int temp;
    temp=(int)tuoByte<<6;
    tuoByte=temp&0xFF;
    Amaro C++, il gusto pieno dell'undefined behavior.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.