Questa pagina è stata utile?
I suggerimenti relativi al contenuto di questa pagina sono importanti. Comunicaceli.
Altri suggerimenti?
1500 caratteri rimanenti
Struttura Byte
Collapse the table of content
Expand the table of content
Il presente articolo è stato tradotto automaticamente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale

Struttura Byte

Rappresenta un intero senza segno a 8 bit.

Spazio dei nomi:  System
Assembly:  mscorlib (in mscorlib.dll)

[SerializableAttribute]
[ComVisibleAttribute(true)]
public struct Byte : IComparable, IFormattable, 
	IConvertible, IComparable<byte>, IEquatable<byte>

Il tipo Byte espone i seguenti membri.

  NomeDescrizione
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreCompareTo(Byte) Confronta questa istanza con un valore intero senza segno a 8 bit specificato e restituisce un'indicazione dei loro valori relativi.
Metodo pubblicoSupportato da XNA FrameworkCompareTo(Object) Confronta questa istanza con un oggetto specificato e restituisce un'indicazione dei loro relativi valori.
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreEquals(Byte) Restituisce un valore che indica se questa istanza ed un oggetto Byte specificato rappresentano lo stesso valore.
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreEquals(Object) Restituisce un valore che indica se questa istanza è uguale ad un oggetto specificato. (Esegue l'override di ValueType.Equals(Object)).
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreGetHashCode Restituisce il codice hash per questa istanza. (Esegue l'override di ValueType.GetHashCode()).
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreGetType Ottiene il Type dell'istanza corrente. (Ereditato da Object)
Metodo pubblicoSupportato da XNA FrameworkGetTypeCodeRestituisce l'oggetto TypeCode del tipo di valore Byte.
Metodo pubblicoMembro staticoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreParse(String) Converte la rappresentazione in forma di stringa di un numero nel suo equivalente Byte.
Metodo pubblicoMembro staticoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreParse(String, NumberStyles) Converte la rappresentazione in forma di stringa di un numero in uno stile specificato nel suo equivalente Byte.
Metodo pubblicoMembro staticoSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreParse(String, IFormatProvider) Converte la rappresentazione in forma di stringa di un numero in un formato specifico delle impostazioni di cultura nel suo equivalente Byte.
Metodo pubblicoMembro staticoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreParse(String, NumberStyles, IFormatProvider) Converte la rappresentazione in forma di stringa di un numero in uno stile specificato e in un formato specifico delle impostazioni di cultura nel suo equivalente Byte.
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreToString() Converte il valore dell'oggetto Byte corrente nella sua equivalente rappresentazione in forma di stringa. (Esegue l'override di ValueType.ToString()).
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreToString(IFormatProvider) Converte il valore numerico dell'oggetto Byte corrente nella sua equivalente rappresentazione in forma di stringa, utilizzando le informazioni specificate relative alle impostazioni di formattazione specifiche della cultura.
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreToString(String) Converte il valore dell'oggetto Byte corrente nella sua equivalente rappresentazione in forma di stringa, utilizzando il formato specificato.
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreToString(String, IFormatProvider) Converte il valore dell'oggetto Byte corrente nella sua equivalente rappresentazione in forma di stringa, utilizzando il formato specificato e le informazioni di formattazione specifiche delle impostazioni di cultura.
Metodo pubblicoMembro staticoSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreTryParse(String, Byte) Tenta di convertire la rappresentazione in forma di stringa di un numero nel suo equivalente Byte e restituisce un valore che indica se la conversione è stata eseguita correttamente.
Metodo pubblicoMembro staticoSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreTryParse(String, NumberStyles, IFormatProvider, Byte) Converte la rappresentazione in forma di stringa di un numero in uno stile specificato e in un formato specifico delle impostazioni di cultura nel suo equivalente Byte. Un valore restituito indica se la conversione è riuscita o meno.
In alto

  NomeDescrizione
Campo pubblicoMembro staticoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreMaxValue Rappresenta il valore massimo possibile di un Byte. Questo campo è costante.
Campo pubblicoMembro staticoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreMinValue Rappresenta il valore minimo possibile di un Byte. Questo campo è costante.
In alto

  NomeDescrizione
Implementazione esplicita dell'interfacciaMetodo privatoSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreIComparable.CompareTo Confronta l'istanza corrente con un altro oggetto dello stesso tipo e restituisce un numero intero che indica se l'istanza corrente precede, segue, oppure si trova nella stessa posizione nell'ordinamento rispetto all'altro oggetto.
Implementazione esplicita dell'interfacciaMetodo privatoSupportato da XNA FrameworkIConvertible.ToBooleanInfrastruttura. Per una descrizione di questo membro, vedere il metodo IConvertible.ToBoolean.
Implementazione esplicita dell'interfacciaMetodo privatoSupportato da XNA FrameworkIConvertible.ToByteInfrastruttura. Per una descrizione di questo membro, vedere il metodo IConvertible.ToByte.
Implementazione esplicita dell'interfacciaMetodo privatoSupportato da XNA FrameworkIConvertible.ToCharInfrastruttura. Per una descrizione di questo membro, vedere il metodo IConvertible.ToChar.
Implementazione esplicita dell'interfacciaMetodo privatoSupportato da XNA FrameworkIConvertible.ToDateTimeInfrastruttura. Questa conversione non è supportata. Il tentativo di utilizzare questo metodo genera un'eccezione InvalidCastException.
Implementazione esplicita dell'interfacciaMetodo privatoSupportato da XNA FrameworkIConvertible.ToDecimalInfrastruttura. Per una descrizione di questo membro, vedere il metodo IConvertible.ToDecimal.
Implementazione esplicita dell'interfacciaMetodo privatoSupportato da XNA FrameworkIConvertible.ToDoubleInfrastruttura. Per una descrizione di questo membro, vedere il metodo IConvertible.ToDouble.
Implementazione esplicita dell'interfacciaMetodo privatoSupportato da XNA FrameworkIConvertible.ToInt16Infrastruttura. Per una descrizione di questo membro, vedere il metodo IConvertible.ToInt16.
Implementazione esplicita dell'interfacciaMetodo privatoSupportato da XNA FrameworkIConvertible.ToInt32Infrastruttura. Per una descrizione di questo membro, vedere il metodo IConvertible.ToInt32.
Implementazione esplicita dell'interfacciaMetodo privatoSupportato da XNA FrameworkIConvertible.ToInt64Infrastruttura. Per una descrizione di questo membro, vedere il metodo IConvertible.ToInt64.
Implementazione esplicita dell'interfacciaMetodo privatoSupportato da XNA FrameworkIConvertible.ToSByteInfrastruttura. Per una descrizione di questo membro, vedere il metodo IConvertible.ToSByte.
Implementazione esplicita dell'interfacciaMetodo privatoSupportato da XNA FrameworkIConvertible.ToSingleInfrastruttura. Per una descrizione di questo membro, vedere il metodo IConvertible.ToSingle.
Implementazione esplicita dell'interfacciaMetodo privatoSupportato da XNA FrameworkIConvertible.ToTypeInfrastruttura. Per una descrizione di questo membro, vedere il metodo IConvertible.ToType.
Implementazione esplicita dell'interfacciaMetodo privatoSupportato da XNA FrameworkIConvertible.ToUInt16Infrastruttura. Per una descrizione di questo membro, vedere il metodo IConvertible.ToUInt16.
Implementazione esplicita dell'interfacciaMetodo privatoSupportato da XNA FrameworkIConvertible.ToUInt32Infrastruttura. Per una descrizione di questo membro, vedere il metodo IConvertible.ToUInt32.
Implementazione esplicita dell'interfacciaMetodo privatoSupportato da XNA FrameworkIConvertible.ToUInt64Infrastruttura. Per una descrizione di questo membro, vedere il metodo IConvertible.ToUInt64.
In alto

Byte è un tipo di valore non modificabile che rappresenta interi senza segno con valori compresi tra 0 (rappresentato dalla costante Byte.MinValue) e 255 (rappresentato dalla costante Byte.MaxValue). In .NET Framework è incluso anche un tipo di valore intero a 8 bit con segno, SByte, che rappresenta i valori compresi tra -128 e 127.

Creazione di un'istanza di un valore byte

È possibile creare un'istanza di un valore Byte in diversi modi:

  • È possibile dichiarare una variabile Byte e assegnarle un valore letterale intero che rientri nell'intervallo del tipo di dati Byte. Nell'esempio seguente vengono dichiarate due variabili Byte a cui vengono assegnati valori in questo modo.

    
    byte value1 = 64;
    byte value2 = 255;
    
    
    
  • È possibile assegnare un valore numerico non byte a un byte. Si tratta di una conversione verso un tipo di dati più piccolo, pertanto richiede un operatore di cast in C# e un metodo di conversione in Visual Basic se l'opzione OptionStrict è attivata. Se il valore non byte è un valore Single, Double o Decimal che include un componente frazionario, la gestione della parte frazionaria dipende dal compilatore che esegue la conversione. Nell'esempio seguente vengono assegnati diversi valori numerici alle variabili Byte.

    
    int int1 = 128;
    try {
       byte value1 = (byte) int1;
       Console.WriteLine(value1);
    }
    catch (OverflowException) {
       Console.WriteLine("{0} is out of range of a byte.", int1);
    }
    
    double dbl2 = 3.997;
    try {
       byte value2 = (byte) dbl2;
       Console.WriteLine(value2);
    }
    catch (OverflowException) {
       Console.WriteLine("{0} is out of range of a byte.", dbl2);
    }
    // The example displays the following output:
    //       128
    //       4      
    
    
    
  • È possibile chiamare un metodo della classe Convert per convertire qualsiasi tipo supportato in un valore Byte. Ciò è possibile poiché l'oggetto Byte supporta l'interfaccia IConvertible. Nell'esempio riportato di seguito viene illustrata la conversione di una matrice di valori Int32 nei valori Byte.

    
    int[] numbers = { Int32.MinValue, -1, 0, 121, 340, Int32.MaxValue };
    byte result;
    foreach (int number in numbers)
    {
       try {
          result = Convert.ToByte(number);
          Console.WriteLine("Converted the {0} value {1} to the {2} value {3}.", 
                            number.GetType().Name, number, 
                            result.GetType().Name, result);
       }                     
       catch (OverflowException) {
          Console.WriteLine("The {0} value {1} is outside the range of the Byte type.", 
                            number.GetType().Name, number);
       }
    }
    // The example displays the following output:
    //       The Int32 value -2147483648 is outside the range of the Byte type.
    //       The Int32 value -1 is outside the range of the Byte type.
    //       Converted the Int32 value 0 to the Byte value 0.
    //       Converted the Int32 value 121 to the Byte value 121.
    //       The Int32 value 340 is outside the range of the Byte type.
    //       The Int32 value 2147483647 is outside the range of the Byte type.      
    
    
    
  • È possibile chiamare il metodo Parse o TryParse per convertire la rappresentazione in forma di stringa di un valore Byte in un valore Byte. La stringa può contenere cifre decimali o esadecimali. Nell'esempio seguente viene illustrata l'operazione di analisi utilizzando sia una stringa decimale sia una stringa esadecimale.

    
    string string1 = "244";
    try {
       byte byte1 = Byte.Parse(string1);
       Console.WriteLine(byte1);
    }
    catch (OverflowException) {
       Console.WriteLine("'{0}' is out of range of a byte.", string1);
    }
    catch (FormatException) {
       Console.WriteLine("'{0}' is out of range of a byte.", string1);
    }
    
    string string2 = "F9";
    try {
       byte byte2 = Byte.Parse(string2, 
                               System.Globalization.NumberStyles.HexNumber);
       Console.WriteLine(byte2);
    }
    catch (OverflowException) {
       Console.WriteLine("'{0}' is out of range of a byte.", string2);
    }
    catch (FormatException) {
       Console.WriteLine("'{0}' is out of range of a byte.", string2);
    }
    // The example displays the following output:
    //       244
    //       249
    
    
    

Esecuzione di operazioni sui valori byte

Il tipo Byte supporta operazioni matematiche standard quali addizione, sottrazione, divisione, moltiplicazione, negazione e negazione unaria. Come gli altri tipi interi, il tipo Byte supporta anche gli operatori AND, OR, XOR bit a bit, left shift e right shift.

È possibile utilizzare gli operatori numerici standard per confrontare due valori Byte oppure è possibile chiamare il metodo CompareTo o Equals.

È inoltre possibile chiamare i membri della classe Math per eseguire una vasta gamma di operazioni numeriche, tra cui ottenere il valore assoluto di un numero, calcolare il quoziente ed il resto di una divisione tra numeri interi, determinare il valore massimo o minimo tra due numeri interi, ottenere il segno di un numero ed eseguire l'arrotondamento di un numero.

Rappresentazione di un byte come stringa

Il tipo Byte fornisce il supporto completo per le stringhe di formato numerico standard e personalizzate. Per ulteriori informazioni, vedere Formattazione dei tipi di dati, Stringhe di formato numerico standard e Stringhe di formato numerico personalizzate. Tuttavia, più comunemente, i valori byte vengono rappresentati come valori a una o tre cifre senza formattazione aggiuntiva o come valori esadecimali a due cifre.

Per formattare un valore Byte come una stringa di numeri interi senza zeri iniziali, è possibile chiamare il metodo ToString() senza parametri. Tramite l'identificatore di formato "D", è possibile includere anche un numero specificato di zeri iniziali nella rappresentazione in forma di stringa. Tramite l'identificatore di formato "X", è possibile rappresentare un valore Byte come una stringa esadecimale. Nell'esempio seguente vengono formattati gli elementi di una matrice di valori Byte in queste tre modalità.


byte[] numbers = { 0, 16, 104, 213 };
foreach (byte number in numbers) {
   // Display value using default formatting.
   Console.Write("{0,-3}  -->   ", number.ToString());
   // Display value with 3 digits and leading zeros.
   Console.Write(number.ToString("D3") + "   ");
   // Display value with hexadecimal.
   Console.Write(number.ToString("X2") + "   ");
   // Display value with four hexadecimal digits.
   Console.WriteLine(number.ToString("X4"));
}   
// The example displays the following output:
//       0    -->   000   00   0000
//       16   -->   016   10   0010
//       104  -->   104   68   0068
//       213  -->   213   D5   00D5      


Inoltre è possibile formattare un valore Byte come una stringa binaria, ottale, decimale o esadecimale chiamando il metodo ToString(Byte, Int32) e fornendo la base come secondo parametro del metodo. Nell'esempio seguente viene chiamato questo metodo per visualizzare le rappresentazioni binarie, ottali ed esadecimali di una matrice di valori byte.


byte[] numbers ={ 0, 16, 104, 213 };
Console.WriteLine("{0}   {1,8}   {2,5}   {3,5}",
                  "Value", "Binary", "Octal", "Hex");
foreach (byte number in numbers) {
   Console.WriteLine("{0,5}   {1,8}   {2,5}   {3,5}",
                     number, Convert.ToString(number, 2),
                     Convert.ToString(number, 8),
                     Convert.ToString(number, 16));
}      
// The example displays the following output:
//       Value     Binary   Octal     Hex
//           0          0       0       0
//          16      10000      20      10
//         104    1101000     150      68
//         213   11010101     325      d5      


Utilizzo di valori byte non decimali

Oltre a utilizzare byte singoli come valori decimali, è necessario eseguire operazioni bit a bit con valori byte, oppure utilizzare matrici di byte con le rappresentazioni binarie o esadecimali di valori byte. Ad esempio, gli overload del metodo BitConverter.GetBytes possono convertire ognuno dei tipi di dati primitivi in una matrice di byte e il metodo BigInteger.ToByteArray converte un valore BigInteger in una matrice di byte.

I valori Byte sono rappresentati in 8 bit solo dalla loro grandezza, senza un bit di segno. Ciò deve essere ricordato quando si eseguono operazioni bit a bit su valori Byte o quando si utilizzano bit singoli. Per eseguire un'operazione numerica, booleana o di confronto su due valori non decimali, per entrambi i valori deve essere utilizzata la stessa rappresentazione.

Quando un'operazione viene eseguita su due valori Byte, questi condividono la stessa rappresentazione, pertanto il risultato è accurato. Questa situazione viene illustrata nell'esempio seguente in cui il bit meno significativo di un valore Byte viene mascherato per assicurare che sia pari.


using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      string[] values = { Convert.ToString(12, 16), 
                          Convert.ToString(123, 16), 
                          Convert.ToString(245, 16) };

      byte mask = 0xFE;
      foreach (string value in values) {
         Byte byteValue = Byte.Parse(value, NumberStyles.AllowHexSpecifier);
         Console.WriteLine("{0} And {1} = {2}", byteValue, mask,  
                           byteValue & mask);
      }
   }
}
// The example displays the following output:
//       12 And 254 = 12
//       123 And 254 = 122
//       245 And 254 = 244


D'altra parte, quando si utilizzano sia bit senza segno sia bit con segno, le operazioni bit a bit vengono complicate dal fatto che relativamente ai valori SByte viene utilizzata la rappresentazione con segno e grandezza per i valori positivi e la rappresentazione in complemento a due per i valori negativi. Per eseguire un'operazione bit a bit significativa, è necessario convertire i valori in due rappresentazioni equivalenti e mantenere le informazioni sul bit di segno. Nell'esempio seguente viene eseguita l'operazione per escludere i bit 2 e 4 di una matrice di valori con e senza segno a 8 bit.


using System;
using System.Collections.Generic;
using System.Globalization;

public struct ByteString
{
   public string Value;
   public int Sign;
}

public class Example
{
   public static void Main()
   {
      ByteString[] values = CreateArray(-15, 123, 245);

      byte mask = 0x14;        // Mask all bits but 2 and 4.

      foreach (ByteString strValue in values) {
         byte byteValue = Byte.Parse(strValue.Value, NumberStyles.AllowHexSpecifier);
         Console.WriteLine("{0} ({1}) And {2} ({3}) = {4} ({5})", 
                           strValue.Sign * byteValue, 
                           Convert.ToString(byteValue, 2), 
                           mask, Convert.ToString(mask, 2), 
                           (strValue.Sign & Math.Sign(mask)) * (byteValue & mask), 
                           Convert.ToString(byteValue & mask, 2));
      }
   }

   private static ByteString[] CreateArray(params int[] values)
   {
      List<ByteString> byteStrings = new List<ByteString>();

      foreach (object value in values) {
         ByteString temp = new ByteString();
         int sign = Math.Sign((int) value);
         temp.Sign = sign;

         // Change two's complement to magnitude-only representation.
         temp.Value = Convert.ToString(((int) value) * sign, 16);

         byteStrings.Add(temp);
      }
      return byteStrings.ToArray();
   }
}
// The example displays the following output:
//       -15 (1111) And 20 (10100) = 4 (100)
//       123 (1111011) And 20 (10100) = 16 (10000)
//       245 (11110101) And 20 (10100) = 20 (10100)


.NET Framework

Supportato in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supportato in: 4, 3.5 SP1

Libreria di classi portabile

Supportato in: Libreria di classi portabile

.NET per applicazioni Windows Store

Supportato in: Windows 8

.NET per applicazioni Windows Phone

Supportato in: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (ruoli di base del server non supportati), Windows Server 2008 R2 (ruoli di base del server supportati con SP1 o versione successiva, Itanium non supportato)

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

Tutti i membri di questo tipo sono thread-safe. I membri che sembrano modificare lo stato dell'istanza restituiscono in realtà una nuova istanza inizializzata con il nuovo valore. Come con qualsiasi altro tipo, le operazioni di lettura e scrittura su una variabile condivisa che contiene un'istanza di questo tipo devono essere protette da un blocco per garantire che siano thread-safe.

Aggiunte alla community

AGGIUNGI
Mostra:
© 2015 Microsoft