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++/CLI Discussion :

Conversion C#-> C++ CLI


Sujet :

C++/CLI

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4
    Par défaut Conversion C#-> C++ CLI
    Bonjour et merci pour votre contribution

    Je ne vois pas comment convertir cette fonction C# en C++ CLI, en particulier la ligne string result ... en sachant qu'en C++ CLI, la fonction ne peut retourner une String:
    En fait, je ne comprends pas et je n 'ai rien trouvé sur le net concernant le String.Concat(buffer.Select(x => x.ToString("X2")).ToArray());
    Si quelqu'un sait et a un peu de temps à me consacrer, merci d'avance.

    static Random random = new Random();
    //static Random ^ random = gcnew Random();

    public static string GetRandomHexNumber(int digits)
    {
    byte[] buffer = new byte[digits / 2];
    //array<unsigned char>^ buffer = gcnew array<unsigned char>(digits / 2);
    random.NextBytes(buffer);
    //random->NextBytes(buffer);
    string result = String.Concat(buffer.Select(x => x.ToString("X2")).ToArray());
    //?
    if (digits % 2 == 0)
    return result;
    return result + random.Next(16).ToString("X");
    }

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 121
    Par défaut
    Hello,

    L'idée qu'une fonction C++/CLI ne peut pas retourner une String est incorrecte. Elle peut et doit retourner un String^ pour être compatible avec.NET.

    Source : https://www.functionx.com/cppcli/fun.../Lesson03c.htm

    La logique C# décortiquée simplement :

    1. buffer.Select(x => x.ToString("X2")) : Pour chaque octet (byte) dans le buffer, convertis-le en une chaîne hexadécimale de deux caractères (par exemple, la valeur 10 devient "0A").
    2. .ToArray() : Met tous ces petits bouts de chaînes dans un tableau.
    3. String.Concat(...) : Colle tous ces bouts de chaînes ensemble pour en former une seule.


    Puisque C++/CLI n'a pas LINQ, on reproduit cette logique avec une boucle, ce qui est tout aussi efficace. La meilleure façon de construire une chaîne dans une boucle en.NET est d'utiliser StringBuilder.

    https://learn.microsoft.com/en-us/do...r?view=net-9.0
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

Discussions similaires

  1. Conversation serveur client php CLI ?
    Par echo55 dans le forum Langage
    Réponses: 0
    Dernier message: 28/10/2015, 14h57
  2. Réponses: 2
    Dernier message: 29/11/2013, 09h29
  3. Outil de conversion CLI vers GUI
    Par salanate dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 17/04/2009, 11h46
  4. Réponses: 1
    Dernier message: 17/10/2007, 14h01
  5. Réponses: 4
    Dernier message: 28/06/2007, 17h25

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