Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CONVERTISSEUR D'UNE BASE VERS UNE AUTRE (BINAIRE, OCTAL, DÉCIMAL ET HEXADÉCIMAL)


Information sur la source

Catégorie :Maths Niveau : Débutant Date de création : 15/11/2003 Date de mise à jour : 15/11/2003 14:06:04 Vu / téléchargé: 5 082 / 773

Note :
7 / 10 - par 1 personne
7,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (10)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
ce petit prog permet de convertir un nombre dans une bases choisie parmi les bases suivante : décimal, binaire, octal et hexadécimal, et de le convertir dans l'une des bases citées ci dessus.
 

Conclusion

ce code à été écrit entre 22h et 4h du mat' donc il reste quelque bug par ci par là...(surtout dans la gestion des erreurs), de plus il ne convertis pas les nombre à virgule (ou en tout cas la conversion est fausse).

merci pour les commentaire et de mettre une note...
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de Afyn le 15/11/2003 19:47:27

J'ai deux questions :
Y a t-il un truc simple pour faire un décallage de Bit vers la gauche ou vers la droite (comme en  c : >>= n ou <<=n) ?
Y a t-il des fonctions en VB pour utiliser des Champs de Bits, c'est à dire je veux forcer le bit 4 d'un long (32 bits) à 0 ou à 1 ?

Merci d'avance

Afyn
Navedac

signaler à un administrateur
Commentaire de DocteurVB le 15/11/2003 19:52:26

c'est possible je me suis pas trop pencher sur la question... si t'a regarder un peu le code qui n'est pas entièrement de moi (moi et un pote), on utilise pas trop des bits mais plutot des chaine de caractères.

pour répondre plus précisément à ta question, ces fonctions, si elles existe (ce qui m'étonnerais mais bon tout est possible), je ne les connais pas.

signaler à un administrateur
Commentaire de EBArtSoft le 15/11/2003 21:24:00 administrateur CS

Afyn>DocteurVB>Tres cher ami en voyant ta question sur le decalage de bit je me suis dit au tres profond de moi meme "Tient mais n'est pas ce que que tu fait en ce moment ? une source pour ajouter a VB6 des fonctions qui nexiste pas et que serait tres pratique ?" ma reponse fut : "Mais SI"

lol

non ... en fait tout ça pour dire que je bosse en ce moment sur des fonctions avancé dans VB comme le decalage de bit, rotation etc...

Et pour dire au tres cher Dr qy'il existait sur ce meme site une source qui converti d'un nombre de base n en base n de (1 a ...) j'ai plus l'id de la source mais bon y'en a pas mal tu aurais pu t'en inspirer...

bref bonne pr@g a tous

signaler à un administrateur
Commentaire de Afyn le 15/11/2003 22:33:00

J'ai jamais compris pourquoi VB ne possédait pas ce genre de fonction:
Pour forcer un Bit à 1 en C voila la fonction

Bit_1(val, n)
Long val, n;
{
return (val | (1L <<n));
}

Pour effectuer ce "Forcing", on décale le mot de valeur "1" ( il s'agit de Long, puisque il est suivit du caractère "L" ) de 'n' bits, et on effectue un "OU" BINAIRE (signe "|")

Pour Forcer un bit à Zéro (toujours en C)

bit_0(val, n)
long val, n;
{
return (val & ~(1L << n));
}


Remarquer la disposition du signe de complémentation.

On peut egalement avoir besoin d'une fonction qui renvoie la valeur d'un Bit (0 ou 1)

J'ai pas vraiment été capable de développer des fonctions similaires en VB, mais je suis preneur si qq sait faire. Ca permet de gagner pas mal de temps.

je sais que l'expression suivante

If Data <= &H7F

Permet de tester le bit de poid fort d'un Octet (8 bits) donc de savoir
s'il est à 0 ou à 1.

J'aimerai bien pouvoir tester n'importe quel bit d'un mot long (32 bits)

Si vous êtes callés sur cette question, merci d'avance.

Afyn
Navedac

signaler à un administrateur
Commentaire de EBArtSoft le 15/11/2003 22:48:08 administrateur CS

Afyn> et bien en basic sa donne qlq chose comme ça :

Pour tester :
Bit = iif((Valeur and (2^nBit)),1,0)

Pour allumer :
Valeur = (Valeur or (2^nBit))

Pour eteindre :
Valeur = (Valeur and not (2^nBit))

Mais quand on regarde le code compilé c'est pas
aussi propre que le c (compte tenu des fonctions employé)

@+

signaler à un administrateur
Commentaire de DocteurVB le 15/11/2003 22:57:47

Cher EBArtSoft,

je ne savais pas qu'il existait une tel source sur ce site mais merci du renseignement.
ma source n'est pas très intéressante d'un point de vu mathématique. la conversion d'une base n vers une base m doit être un exercice autrement plus difficil que ce que j'ai pondu...
disons que mon code est plutot pratique pour étudier les fonctions d'extraction de chaine (ce sur quoi il sa base pour l'analyse des nombres).

d'autre part je me pose une question suite à votre reflexion sur le décalage de bit. quelle est le réel intéret du décalage de bit à part dans le calcule en base 2?

merci d'avance pour la réponse et bonne prog à tous...

signaler à un administrateur
Commentaire de Afyn le 15/11/2003 23:23:03

-> suite pour les noctambules
EBArt -> Merci, c'est sympa, j'vais bucher ça
Doc   -> Je m'en sert pour le calcul des DeltaTimes du MIDI, c'est la méthode qui à été retenue (à l'époque le Basic ne savait pas faire tout ça, alors on programmait en C) pour avoir des données de longueurs variables. (ca sert à rien de Xmettre un mot de 32 bits si la valeur est 10 par exemple).
Merci pour vos lumières à tout les deux.
A+
Afyn
Navedac

signaler à un administrateur
Commentaire de DocteurVB le 16/11/2003 12:17:47

à comprend toujours pas pourquoi tu te sert des décalages de bit, je me doute de toute façon que c'est le C ou le C++ qui est le plus adapté pour ce genre de chose mais c'est koi le "DeltaTimes"...?

signaler à un administrateur
Commentaire de Afyn le 16/11/2003 14:49:41

Le DeltaTime est l'indication de la durée qui sépare 2 informations de messages MIDI dans les MIDIFILES.

Les Delta Times sont comptés en nombre de Ticks.

Le Tick est fonction de la résolution (division d'une noire en petit bout)
Plus la résolution est grande, plus l'intervalle de temps entre deux Ticks est petit.

C'est organisé de la Façon suivante :
- Delta Time - MIDI Message1
- Delta Time - MIDI Message2
- Delta Time - MIDI Message3

etc..

On appele cette technique "time-stamped", ou données qui sont référencées temporellement.

La durée qui sépare 2 messages peut varier de
0 (zéro) à 268 435 455 ticks (28bits)

Pour deux octets la procedure pour compacter des Delta Times est la suivante :
Décaler les bits 8 à 14 d'une position vers la gauche
Positionner à 1 le bit 7 de l'octet de poid faible
positionner à 0 le bit 7 de l'autre octet

C'est nécessaire de connaitre ce genre de mécanisme si l'on veut lire des fichiers MIDIFILE ou en écrire

Ces infos sont tirées de la Norme MIDI Tome 1
(ISBN-2-7361-1400-0)

Bon Dimanche

A+

Afyn
Navedac


signaler à un administrateur
Commentaire de kurnz le 16/11/2003 22:45:50

J'aimerais savoir si lorque tu écris octal tu veux dire base 8 ?? est-ce équivalent ??

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,250 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.