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

Algorithmes et structures de données Discussion :

Conversions X à Y


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 27
    Par défaut Conversions X à Y
    Voilà, j'aurais aimé posé une deuxième question aujourd'hui.
    Comment fait-on, en géneral, pour passer d'une base X (0->256) à une base Y (0->256).
    Je vous assure, cette question m'a pris la tête pendant plusieurs heures. Pas moyen de trouver quelque chose de valable sur le net... Et toutes mes théories ont été ébranlées par plusieurs logiciels. C'est pourquoi j'en demande à votre aide.
    Merci

    ps : par conversion j'entend par ex -> passer d'une valeur binaire à une valeur décimale

  2. #2
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Un moyen simple est peut être de repasser par la base décimale puis de reconvertir dans une autre base.

  3. #3
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 27
    Par défaut
    C'est trop long.
    J'aimerais directement passer d'une base à une autre.

  4. #4
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    La première étape est de déterminer la puissance P de Y la plus grande qui soit inférieure au nombre N à convertir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    N<Y^P
    lnN<PlnY
    P=floor(lnN/lnY)

  5. #5
    Membre émérite Avatar de 10_GOTO_10
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    890
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 890
    Par défaut
    Citation Envoyé par backtothend
    passer d'une valeur binaire à une valeur décimale
    Une valeur n'est pas binaire ou décimale. C'est sa représentation qui est binaire ou décimale. En mémoire, elle est certainement stockée en représentation binaire (à moins que t'aie un ordinateur quantique ou à trois états ?), mais peu importe. La question est donc "comment avoir la représentation en base B d'une valeur ?".

    Comme l'a dit seriousme, chaque chiffre N d'indice i est le nombre de fois que contient B ^ (i - 1), et ensuite on passe au chiffre suivant (d'indice inférieur).

  6. #6
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 27
    Par défaut
    Citation Envoyé par 10_GOTO_10
    Une valeur n'est pas binaire ou décimale. C'est sa représentation qui est binaire ou décimale. En mémoire, elle est certainement stockée en représentation binaire (à moins que t'aie un ordinateur quantique ou à trois états ?), mais peu importe. La question est donc "comment avoir la représentation en base B d'une valeur ?".

    Comme l'a dit seriousme, chaque chiffre N d'indice i est le nombre de fois que contient B ^ (i - 1), et ensuite on passe au chiffre suivant (d'indice inférieur).
    Désolé pour l'erreur.

    J'ai réussi à faire un algo de conversion direct pour différentes base.
    Par contre j'aurais aimé avoir une autre information :
    Jusquà la base 62, on utilise des caractères alphanumériques(maj et min compris).
    Pour aller vers la base 63, on rajoute un carctère non-alpha numérique à la table, pour la 64 aussi, pour la 65 aussi jusqu'à 256 (table ascii)
    J'aimerais savoir comment déterminé le caractère à ajouter dans la table pour les bases >62. A ce que j'ai pu voir, il n'y a pas d'ordre précis(comme pour les caractères alpha-numériques), ou alors je me trompes.
    Connaissez-vous un site qui regroupe toutes les tables de chaques bases?
    Merci

  7. #7
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 27
    Par défaut
    Pour être plus conscis :
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    base1:0
    base2:01
    base3:012
    base4:0123
    base5:01234
    base6:012345
    base7:0123456
    base8:01234567
    base9:012345678
    base10:0123456789
    0123456789A
    0123456789AB
    0123456789ABC
    0123456789ABCD
    0123456789ABCDE
    0123456789ABCDEF
    0123456789ABCDEFG
    0123456789ABCDEFGH
    0123456789ABCDEFGHI
    0123456789ABCDEFGHIJ
    0123456789ABCDEFGHIJK
    0123456789ABCDEFGHIJKL
    0123456789ABCDEFGHIJKLM
    0123456789ABCDEFGHIJKLMN
    0123456789ABCDEFGHIJKLMNO
    0123456789ABCDEFGHIJKLMNOP
    0123456789ABCDEFGHIJKLMNOPQ
    0123456789ABCDEFGHIJKLMNOPQR
    0123456789ABCDEFGHIJKLMNOPQRS
    0123456789ABCDEFGHIJKLMNOPQRST
    0123456789ABCDEFGHIJKLMNOPQRSTU
    0123456789ABCDEFGHIJKLMNOPQRSTUV
    0123456789ABCDEFGHIJKLMNOPQRSTUVW
    0123456789ABCDEFGHIJKLMNOPQRSTUVWX
    0123456789ABCDEFGHIJKLMNOPQRSTUVWXY
    0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
    0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZa
    0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZab
    0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabc
    0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcd
    0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcde
    0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef
    0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefg
    0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefgh
    0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi
    0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghij
    0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk
    0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijkl
    0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklm
    0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmn
    0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmno
    0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnop
    0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopq
    0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr
    0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrs
    0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrst
    0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstu
    0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuv
    0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvw
    base60:0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwx
    base61:0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxy
    base62:0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
    base63:0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz?
    base64:0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz??
    base66:0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz???
    base67:0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz????
    base68:0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz?????
    base69:0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz??????
    base70:0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz???????
    Comment je remplaces les "?" car il n'y a pas d'ordre en particulier lorsque la base est plus grande que 62.
    Connaissez-vous un site qui regroupe toutes les tables de toutes les bases?
    Merci

  8. #8
    Membre émérite Avatar de 10_GOTO_10
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    890
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 890
    Par défaut
    Citation Envoyé par backtothend
    Pour être plus conscis :
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    base1:0
    base2:01
    base3:012
    base4:0123
    base5:01234
    base6:012345
    base7:0123456
    base8:01234567
    base9:012345678
    base10:0123456789
    0123456789A
    0123456789AB
    0123456789ABC
    0123456789ABCD
    0123456789ABCDE
    0123456789ABCDEF
    0123456789ABCDEFG
    0123456789ABCDEFGH
    0123456789ABCDEFGHI
    0123456789ABCDEFGHIJ
    0123456789ABCDEFGHIJK
    0123456789ABCDEFGHIJKL
    0123456789ABCDEFGHIJKLM
    0123456789ABCDEFGHIJKLMN
    0123456789ABCDEFGHIJKLMNO
    0123456789ABCDEFGHIJKLMNOP
    0123456789ABCDEFGHIJKLMNOPQ
    0123456789ABCDEFGHIJKLMNOPQR
    0123456789ABCDEFGHIJKLMNOPQRS
    0123456789ABCDEFGHIJKLMNOPQRST
    0123456789ABCDEFGHIJKLMNOPQRSTU
    0123456789ABCDEFGHIJKLMNOPQRSTUV
    0123456789ABCDEFGHIJKLMNOPQRSTUVW
    0123456789ABCDEFGHIJKLMNOPQRSTUVWX
    0123456789ABCDEFGHIJKLMNOPQRSTUVWXY
    0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
    0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZa
    0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZab
    0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabc
    0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcd
    0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcde
    0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef
    0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefg
    0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefgh
    0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi
    0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghij
    0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk
    0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijkl
    0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklm
    0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmn
    0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmno
    0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnop
    0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopq
    0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr
    0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrs
    0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrst
    0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstu
    0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuv
    0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvw
    base60:0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwx
    base61:0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxy
    base62:0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
    base63:0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz?
    base64:0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz??
    base66:0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz???
    base67:0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz????
    base68:0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz?????
    base69:0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz??????
    base70:0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz???????
    Merci d'avoir été aussi concis...

    Ton problème n'est donc pas un problème de conversion, mais uniquement de représentation des chiffres.

    Je ne sais même pas s'il y a des conventions sur ce point. Ce qui est sûr, c'est qu'on ne peut pas avoir plus de chiffres que de caractères imprimables (à moins de représenter un chiffre par heu... plusieurs chiffres ou lettres). Jusqu'à la base combien voudrais-tu aller ?

  9. #9
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 27
    Par défaut
    J'aimerais faire des conversion >base 256

    De toute manière, je comprend déjà pas le faite que l'on passe des chiffres à l'aphabet(majuscules) pour passer de base 10 à base 11.
    Théoriquement dans la table ascii nous avons 7 caractères entre les chiffres et les lettres majuscules :
    48 30 00110000 0
    49 31 00110001 1
    50 32 00110010 2
    51 33 00110011 3
    52 34 00110100 4
    53 35 00110101 5
    54 36 00110110 6
    55 37 00110111 7
    56 38 00111000 8
    57 39 00111001 9
    58 3A 00111010 :
    59 3B 00111011 ;
    60 3C 00111100 <
    61 3D 00111101 =
    62 3E 00111110 >
    63 3F 00111111 ?
    64 40 01000000 @

    65 41 01000001 A
    66 42 01000010 B
    67 43 01000011 C

    Pourtant des convertisseurs genéraux existent, ce qui veut donc dire qu'il y a une règle derrière tout ca. N'existerait-il pas des conventions toutes faites? Un site proposant les tables pour les bases >256 ?

  10. #10
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Par défaut
    Citation Envoyé par backtothend
    Pour être plus conscis :
    Pour information : la base 1 n'existe pas ; comment écris-tu 0x01 en base 1 ?

  11. #11
    Expert confirmé
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Par défaut
    Pour information : la base 1 n'existe pas ; comment écris-tu 0x01 en base 1 ?
    Oui, la base n a n symboles donc la base 1 a 1 seul symbole : 0 or on ne peut construire un nombre avec 1 seul symbole puisqu'on ne peut différencier deux nombres dans cette base.

    Disons, qu'il n'y en a aucune. Ou si : pour que je ne me poses plus ce genre de questions ! ^^
    Il n'y a aucune norme ou convention là dessus. Car les nombres de tels bases ne le sont que de manière interne, jamais on donne la "visualisation symbolique" de ces nombres, ça n'a aucun interêt.

    Une base B a une représentation symbolique valable si le nombre de symbole est minimal (tout simplement parce que c'est plus facile à apprendre). Cette représentation n'a de sens que pour les humains.

Discussions similaires

  1. Conversion Assembleur Motorola 68xxx en Intel 80xxx
    Par markham dans le forum Autres architectures
    Réponses: 3
    Dernier message: 22/11/2002, 20h09
  2. [MSXML] Comment empécher la conversion des entités ?
    Par nima dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 08/11/2002, 14h14
  3. Algorithme de conversion de RTF vers HTML
    Par youtch dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 10/09/2002, 12h35
  4. [Conversions] Millisecondes...
    Par agh dans le forum Langage
    Réponses: 2
    Dernier message: 06/08/2002, 11h25
  5. Réponses: 2
    Dernier message: 05/06/2002, 12h29

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