Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.
Traduction
Anglais

Convert.ToSByte méthode (String, Int32)

 

Date de publication : novembre 2016

Convertit la représentation sous forme de chaîne d'un nombre dans une base spécifiée en entier signé 8 bits équivalent.

Cette API n’est pas conforme CLS.

Espace de noms:   System
Assembly:  mscorlib (dans mscorlib.dll)

[CLSCompliantAttribute(false)]
public static sbyte ToSByte(
	string value,
	int fromBase
)

Paramètres

value
Type: System.String

Chaîne contenant le nombre à convertir.

fromBase
Type: System.Int32

Base du nombre figurant dans value, qui doit correspondre à 2, 8, 10 ou 16.

Valeur de retour

Type: System.SByte

Entier signé 8 bits équivalent au nombre dans value, ou 0 (zéro) si value est null.

Exception Condition
ArgumentException

fromBase n’a pas la valeur 2, 8, 10 ou 16.

ou

value, qui représente un nombre signé autre qu’en base 10, est préfixé avec un signe négatif.

ArgumentOutOfRangeException

value a la valeur String.Empty.

FormatException

value contient un caractère qui n’est pas un chiffre valide dans la base spécifiée par fromBase. Le message d’exception indique qu’il n’y a pas de chiffres à convertir si le premier caractère dans value n’est pas valide ; sinon, le message indique que value contient des caractères de fin non valides.

OverflowException

value, qui représente un nombre signé autre qu’en base 10, est préfixé avec un signe négatif.

ou

value représente un nombre qui est inférieur à SByte.MinValue ou supérieur à SByte.MaxValue.

Si fromBase est 16, vous pouvez faire précéder le nombre spécifié par le value paramètre avec « 0 x » ou « 0 X ».

Étant donné que le signe négatif n’est pas prise en charge pour les 10 numériques représentations de base, le ToSByte(String, Int32) méthode part du principe que les nombres négatifs utilisent la représentation de complément à deux. En d’autres termes, la méthode interprète toujours le bit de poids fort d’un octet (bit 7) comme étant son bit de signe. Par conséquent, il est possible d’écrire du code dans laquelle une autre base 10 nombre qui est hors de portée de la SByte type de données est converti en un SByte valeur sans la méthode lève une exception. L’exemple suivant convertit MaxValue à sa représentation sous forme de chaîne hexadécimale, puis appelle la ToSByte(String, Int32) (méthode). Au lieu de lever une exception, la méthode affiche le message « 0xff Convertit -1. »

// Create a hexadecimal value out of range of the SByte type.
string value = Convert.ToString(byte.MaxValue, 16);
// Convert it back to a number.
try
{
   sbyte number = Convert.ToSByte(value, 16);
   Console.WriteLine("0x{0} converts to {1}.", value, number);
}   
catch (OverflowException)
{
   Console.WriteLine("Unable to convert '0x{0}' to a signed byte.", value);
}   

Lorsque vous effectuez des opérations binaires ou conversions numériques, il est toujours de la responsabilité du développeur pour vérifier qu’une méthode utilise la représentation numérique appropriée pour interpréter une valeur particulière. Comme l’illustre l’exemple suivant, vous pouvez vous assurer que la méthode gère correctement les dépassements de capacité en déterminant d’abord si une valeur représente un non signé ou un type signé lors de sa conversion en sa représentation sous forme de chaîne hexadécimale. Lève une exception si la valeur d’origine était un type non signé, mais la reconversion en octet signé donne une valeur dont le bit de signe est activé.

// Create a hexadecimal value out of range of the SByte type.
byte sourceNumber = byte.MaxValue;
bool isSigned = Math.Sign(Convert.ToDouble(sourceNumber.GetType().GetField("MinValue").GetValue(null))) == -1;
string value = Convert.ToString(sourceNumber, 16);
sbyte targetNumber;
try
{
   targetNumber = Convert.ToSByte(value, 16);
   if (! isSigned && ((targetNumber & 0x80) != 0))
      throw new OverflowException();
   else 
      Console.WriteLine("0x{0} converts to {1}.", value, targetNumber);
}
catch (OverflowException)
{
   Console.WriteLine("Unable to convert '0x{0}' to a signed byte.", value);
} 
// Displays the following to the console:
//    Unable to convert '0xff' to a signed byte.     

L’exemple suivant tente d’interpréter les éléments dans un tableau de chaînes en tant que le fichier binaire, octal et la représentation hexadécimale de valeurs numériques pour les convertir en octets non signés.

using System;

public class Example
{
   public static void Main()
   {
      int[] baseValues = { 2, 8, 16};
      string[] values = { "FF", "81", "03", "11", "8F", "01", "1C", "111", 
                          "123", "18A" }; 

      // Convert to each supported base.
      foreach (int baseValue in baseValues)
      {
         Console.WriteLine("Converting strings in base {0}:", baseValue);
         foreach (string value in values)
         {
            Console.Write("   '{0,-5}  -->  ", value + "'");
            try {
               Console.WriteLine(Convert.ToSByte(value, baseValue));
            }   
            catch (FormatException) {
               Console.WriteLine("Bad Format");
            }   
            catch (OverflowException) {
               Console.WriteLine("Out of Range");
            }
         }
         Console.WriteLine();
      }
   }
}
// The example displays the following output:
//       Converting strings in base 2:
//          'FF'    -->  Bad Format
//          '81'    -->  Bad Format
//          '03'    -->  Bad Format
//          '11'    -->  3
//          '8F'    -->  Bad Format
//          '01'    -->  1
//          '1C'    -->  Bad Format
//          '111'   -->  7
//          '123'   -->  Bad Format
//          '18A'   -->  Bad Format
//       
//       Converting strings in base 8:
//          'FF'    -->  Bad Format
//          '81'    -->  Bad Format
//          '03'    -->  3
//          '11'    -->  9
//          '8F'    -->  Bad Format
//          '01'    -->  1
//          '1C'    -->  Bad Format
//          '111'   -->  73
//          '123'   -->  83
//          '18A'   -->  Bad Format
//       
//       Converting strings in base 16:
//          'FF'    -->  -1
//          '81'    -->  -127
//          '03'    -->  3
//          '11'    -->  17
//          '8F'    -->  -113
//          '01'    -->  1
//          '1C'    -->  28
//          '111'   -->  Out of Range
//          '123'   -->  Out of Range
//          '18A'   -->  Out of Range

Plateforme Windows universelle
Disponible depuis 8
.NET Framework
Disponible depuis 1.1
Bibliothèque de classes portable
Pris en charge dans : plateformes .NET portables
Silverlight
Disponible depuis 2.0
Silverlight pour Windows Phone
Disponible depuis 7.0
Windows Phone
Disponible depuis 8.1
Retour au début
Afficher: