web-dev-qa-db-fra.com

Comment convertir long to int in .net?

Je développe l'application Windows Phone 7 dans Silverlight. Je suis nouveau dans l'application Windows Phone 7. J'ai la valeur longue au format String comme suit

String Am = AmountTextBox.Text.ToString() 

AmountTextBox.Text.ToString () dans le code ci-dessus est une valeur longue au format chaîne. Je souhaite stocker une valeur intermédiaire de 15 chiffres dans mon application.

J'ai trouvé le lien suivant pour la conversion.

Puis-je convertir long en int?

Comment dois-je convertir une valeur longue au format chaîne en int? Pouvez-vous s'il vous plaît me fournir un code ou un lien par lequel je peux résoudre le problème ci-dessus? Si je fais quelque chose de mal, alors guide-moi s'il te plaît.

13
Shailesh Jaiswal

Vous ne pouvez pas stocker un nombre entier de 15 chiffres car la valeur maximale d'un nombre entier est 2 147 483 647.

Quel est le problème avec une valeur long-?

Vous pouvez utiliser TryParse () pour obtenir la valeur long- à partir de votre entrée utilisateur:

String Am = AmountTextBox.Text.ToString();
long l;
Int64.TryParse(Am, out l);

Il retournera false si le texte ne peut pas être converti en long, son utilisation est donc très sûre.

Sinon, convertir une long en int est simple comme bonjour. 

int i = (int)yourLongValue;

si vous êtes content de vous débarrasser des MSB et de prendre des LSB.

9
sloth

Utilisez Convert.ToInt32 () . Si la valeur est trop grande pour un int, il générera une OverflowException.

Cette méthode peut prendre toute une gamme de valeurs, y compris Int64 et Strings.

21
Ian

Vous avez un nombre stocké sous la forme string et vous souhaitez le convertir en type numérique.

Vous ne pouvez pas le convertir en type int (également appelé Int32), car, comme le mentionnent les autres réponses, ce type n'a pas une plage suffisante pour stocker la valeur souhaitée. 

Au lieu de cela, vous devez convertir la valeur en long (également appelé Int64). Le moyen le plus simple et le plus simple de le faire consiste à utiliser la méthode TryParse , qui convertit une représentation sous forme de chaîne d'un nombre en son équivalent entier signé de 64 bits.

L'avantage d'utiliser cette méthode (au lieu de quelque chose comme Parse) est qu'elle ne lève pas d'exception si la conversion échoue. Étant donné que les exceptions sont coûteuses, évitez de les lancer sauf si cela est absolument nécessaire. Au lieu de cela, vous spécifiez la chaîne contenant le nombre à convertir en tant que premier argument de la méthode et une valeur out pour recevoir le nombre converti si la conversion aboutit. La valeur renvoyée est un booléen, indiquant si la conversion a réussi ou non.

Exemple de code:

private void ConvertNumber(string value)
{
    Int64 number; // receives the converted numeric value, if conversion succeeds

    bool result = Int64.TryParse(value, out number);
    if (result)
    {
         // The return value was True, so the conversion was successful
         Console.WriteLine("Converted '{0}' to {1}.", value, number);
    }
    else
    {
        // Make sure the string object is not null, for display purposes
        if (value == null)
        {
            value = String.Empty;
        }

         // The return value was False, so the conversion failed
        Console.WriteLine("Attempted conversion of '{0}' failed.", value);
    }
}
2
Cody Gray

En C #, int a 32 bits et long a 64 bits. Par conséquent, toutes les valeurs de long ne peuvent pas être int. Peut-être obtenir un tableau de ints?

public static int[] ToIntArray(long l)
{
    var longBytes = BitConverter.GetBytes(l);

    // Get integers from the first and the last 4 bytes of long
    return new int[] {
        BitConverter.ToInt32(longBytes, 0),
        BitConverter.ToInt32(longBytes, 4)
    };
}
0
Ablue

La valeur maximale de Int32 dans C # est 2 147 483 647, plus courte que les 15 chiffres requis.

Êtes-vous sûr de devoir convertir cette valeur en int? Il semble que vous feriez mieux de stocker la valeur dans une long ou de la laisser sous la forme String.

0
GavinH

Une valeur Long stocke plus de données qu'une valeur Integer 32. Par conséquent, si vous souhaitez conserver les 15 chiffres, vous ne pouvez pas convertir en un Integer standard.

Mais mis à part le type de données que vous voulez utiliser, la classe Convert devrait vous aider, par exemple, Convert.ToInt64, qui peut faire ce que vous voulez.

0
cusimar9