IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

[C#] Comment transformer literal > sbyte|int|short|long ?


Sujet :

C#

  1. #1
    Membre du Club Avatar de AdriM
    Inscrit en
    Mars 2005
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 70
    Points : 66
    Points
    66
    Par défaut [C#] Comment transformer literal > sbyte|int|short|long ?
    Salut,

    Je veux créer une fonction qui transforme une base en entier, mais n'importe quel type d'entier (sbyte, int, short, long...), mais pour l'instant j'ai que trouvé pour le transformer en un type particulier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    public int BaseToDecimal(string sBase, int numbase)
            {
                int dec = 0;
                int b;
                int iProduct = 1;
                string sHexa = "";
     
                if (numbase > _base10)
                    for (int i = 0; i < _cHexa.Length; i++)
                        sHexa += _cHexa.GetValue(i).ToString();
     
                for (int i = sBase.Length - 1; i >= 0; i--, iProduct *= numbase)
                {
                    string sValue = sBase[i].ToString();
                    if (sValue.IndexOfAny(_cHexa) >= 0)
                        b = _iHexaNumeric[sHexa.IndexOf(sBase[i])];
                    else
                        b = (int)sBase[i] - _asciiDiff;
                    dec += (b * iProduct);
                }
                return dec;
            }
    Je voudrais qu'il ne retourne pas forcement un int... Ma question est, y'a t'il un moyen d'envoyer dans les arguments le type du retour que l'on veut... c'est surment tiré par les cheveux...

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    487
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 487
    Points : 621
    Points
    621
    Par défaut
    Une solution est de surcharger la méthode en passant un argument par référence pour récupérer la valeur de retour.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public void BaseToDecimal(string sBase, int numbase, out int dec)
            {
                /*int*/ dec = 0; //dec est passé comme argument
                ...
                /*return dec;*/ //pas de return
            }
    public void BaseToDecimal(string sBase, int numbase, out short dec)...
    public void BaseToDecimal(string sBase, int numbase, out long dec)...
    à appeler ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                int iVar;
                BaseToDecimal(myString, myBase, out iVar);
                short sVar;
                BaseToDecimal(myString, myBase, out sVar);

  3. #3
    Membre du Club Avatar de AdriM
    Inscrit en
    Mars 2005
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 70
    Points : 66
    Points
    66
    Par défaut
    voila, j'y avais pensé... si c'est la seule solution

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 03/10/2006, 23h16
  2. Réponses: 2
    Dernier message: 01/05/2005, 20h37
  3. Réponses: 2
    Dernier message: 14/01/2005, 15h40
  4. XML/XSL vers HTML: comment transformer les linefeed en <B
    Par AlainM dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 18/11/2003, 12h30
  5. comment transformer un.jpg en .ico
    Par bacca en galère dans le forum Autres Logiciels
    Réponses: 9
    Dernier message: 30/10/2003, 13h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo