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 :

Convertir Guid en Base 96


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 13
    Par défaut Convertir Guid en Base 96
    Bonjour,

    Je voudrais savoir comment faire en C# afin de convertir un Guid en base 96.
    En effet, je dois stocker cela dans un champ texte de 20 caractères, et les caractères supportés sont compris entre 32 et 128...

    Si quelqu'un avait idée comment faire ou si quelqu'un avait déjà cela dans ces tiroirs, cela m'éviterais de me prendre la tête.

    Merci d'avance...

    Nara20

  2. #2
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2012
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2012
    Messages : 87
    Par défaut
    J'ai eu affaire un peu à la même problématique.

    Tu peux jeter un oeil sur ce site :
    http://www.codinghorror.com/blog/200...f-ascii85.html

    Le principe est de convertir le GUID en ascii85
    Une classe Ascii85 est fourni dans le code à télécharger sur la page

    Après implémentation de la classe dans le code il suffit de faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
                Ascii85 a = new Ascii85();
                string sGuid = a.Encode(Guid.NewGuid().ToByteArray());
    La chaîne retournée est composé du guid encodé en 20 caractères.
    De mémoire la chaîne retournée était composée de 24 caractères mais formaté avec des caractère spéciaux en début et fin de chaîne (<~GUID~>).
    Mais on s'en débarrasse facilement.

    Cordialement,
    MvK

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Tu peux peut-être utiliser le même principe que la Base64, mais ça risque d'être un peu compliqué...

    En Base64, on regroupe les données en groupes de 3 octets (24 bits) qu'on divise ensuite en 4 x 6 bits. On fait ensuite correspondre un caractère à chaque groupe de 6 bits (soit 64 caractères possibles)

    Pour faire 96 avec le même principe, déjà ça colle pas... avec des groupes de 7 bits, ça fait déjà 128 caractères possibles, donc plus que tu ne peux supporter. Bref, je sais pas trop comment tu peux t'en sortir comme ça en fait...

    D'où vient cette limitation à 20 caractères ? Tu ne peux pas augmenter la taille du champ à 36, et y mettre simplement la représentation texte par défaut du Guid (genre "28b9572c-48d3-454d-b35d-7ddff56ed5fd") ?

    Sinon, l'encodage Ascii85 proposé par MvK0610 peut effectivement être une solution... ça encode 4 octets sur 5 caractères, donc 16 octets sur 20 caractères. Ca rentre pile poile... Mais bon, c'est moche quand même, si c'est possible il vaut vraiment mieux augmenter la taille du champ

Discussions similaires

  1. [VB.NET] Convertir un nombre base 10 vers 9 sans 0
    Par Dayvid dans le forum Débuter
    Réponses: 0
    Dernier message: 24/05/2013, 18h25
  2. Comment convertir de la base 16 vers la base 10 ?
    Par beegees dans le forum Assembleur
    Réponses: 10
    Dernier message: 25/12/2008, 11h01
  3. Convertir un entier base 10 en base X ?
    Par titoumimi dans le forum Langage
    Réponses: 2
    Dernier message: 16/09/2006, 13h14
  4. [SQL7] Convertir table ou base en utf-8
    Par lnhf dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 07/02/2006, 09h10

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