Transformer un byte en string

mariataz - 16 janv. 2013 à 19:45
DevLama Messages postés 356 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 18 novembre 2021 - 28 janv. 2013 à 15:28
Bonjour,
je viens de commencer de c# et on a un TP qui nous demande de faire un random dans un tableau
mais le nombre crée doit pas apparaitre deux fois.
À date voila ce que j'ai ecrit!
        
const byte LIMITE_INFÉRIEURE = 0;
const byte LIMITE_SUPÉRIEURE = 20;
Random _rand = new Random();
static byte[] abyTableau = new byte[LIMITE_SUPÉRIEURE];
static byte _NbCases = 0;
private void ContenirNombre()
        {
            _NbCases = (byte)(_rand.Next(LIMITE_INFÉRIEURE, LIMITE_SUPÉRIEURE));
            for (byte byIndex LIMITE_INFÉRIEURE; byIndex abyTableau.Length; byIndex++)
            {
                abyTableau[byIndex] = _NbCases;

            }
        }

3 réponses

yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
16 janv. 2013 à 22:47
Salut,

voici une méthode avec Sort et BinarySearch

private void ContenirNombre()
{
    // init tableau à une valeur hors limite
    for (byte i = LIMITE_INFÉRIEURE; i < abyTableau.Length; i++)
    {
        unchecked
        {
            abyTableau[i] = (byte)-1;
        }
    }

    // boucle sur tous les elements
    for (byte byIndex = LIMITE_INFÉRIEURE; byIndex < abyTableau.Length; byIndex++)
    {
        _NbCases = (byte)_rand.Next(LIMITE_INFÉRIEURE, LIMITE_SUPÉRIEURE);

        // Tri le tableau (obligatoire pour BinarySearch)
        if (byIndex > LIMITE_INFÉRIEURE)
            Array.Sort(abyTableau);

        if (byIndex == LIMITE_INFÉRIEURE || Array.BinarySearch(abyTableau, _NbCases) < 0)
        {
            // ok, sans doublon
            abyTableau[byIndex] = _NbCases;
        }
        else
        {
            // doublon trouvé, recommence
            byIndex--;
        }
    }
}


Voilà, le tableau contient des valeurs uniques

bye..
0
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
17 janv. 2013 à 13:16
Re,

conseil,
mettre un seed dans le Random (amorce) :
(peut permettre d'avoir des suites différentes entre chaque appel), à vérifier quant même.

Random _rand = new Random(DateTime.Now.Millisecond);


bye...
0
DevLama Messages postés 356 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 18 novembre 2021 10
28 janv. 2013 à 15:28
utilise le namespace System.Text;

foreach(byte s in Encoding.default.getbytes(char[]values){
txtbyte.Text+=s;
}

La Science est Grande et Vaste partageons cette connaisance
0
Rejoignez-nous