PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV (précédentes versions) → ASCII vers Binaire 8bits et inversement
ASCII vers Binaire 8bits et inversement
Débuté par Fred2355, 17 mai 2018 12:54 - 7 réponses
Membre enregistré
133 messages
Posté le 17 mai 2018 - 12:54
Bonjour,
J'ai eu l'occasion de poster un message similaire mais mon projet ayant sensiblement changé, je poste ici ma nouvelle question.

Quelle est l'instruction ou la chaine de code qui pourrait me donner la valeur en binaire sur 8bits d'un caractere ascii.
exemple A = 01000001
Et quelle est l'instruction inverse qui donne l'equivalent ASCII d'une valeur binaire sur 8 bits
exemple 01001101 = M

Merci pour votre aide.
Membre enregistré
252 messages
Popularité : +4 (4 votes)
Posté le 19 mai 2018 - 11:28
Bonjour,

En Windev natif je ne pense pas que ce soit faisable mais voici un code en javascript. C’est peut-être convertible.

https://github.com/mathiasbynens/mothereff.in/tree/master/binary-ascii
Membre enregistré
133 messages
Posté le 16 juin 2018 - 23:02
Bonsoir Damien,
Merci pour le lien.
D'un point de vu HTML c'est tout a fait ca. Mais il faudrait qu'a la place d'un HMTL je puisse faire une appli avec WinDev.
J'ai regardé mais je ne sais pas comment il faudrait faire pour que depuis WinDev je puisse appeler ce script java.
As tu une idée?
Merci.
Membre enregistré
501 messages
Posté le 17 juin 2018 - 13:15
Bonjour,
Ils suffit de récupérer la valeur décimale de chaque caractère de ta chaîne via la fonction Asc et de convertir cette valeur en binaire.

--
Il y a peut être plus simple, mais, ça tourne
Membre enregistré
501 messages
Posté le 17 juin 2018 - 14:23
Par ailleurs je te renvoie vers le post suivant dans lequel je t'avais donné le code, qui ne t'en déplaise fonctionne correctement. Il suffit de savoir que le binaire c'est la base 2.
https://forum.pcsoft.fr/fr-FR/pcsoft.fr.windev.old/25362-convertire-chaine-caractere-binaire-25378/read.awp…
DecimalVersBase(65,2)

renvoie bien 1000001, pour l'avoir sur 8 bit, il suffit de bourrer avec des 0 à gauche

--
Il y a peut être plus simple, mais, ça tourne
Message modifié, 17 juin 2018 - 14:24
Membre enregistré
133 messages
Posté le 18 juin 2018 - 18:00
Oula Oula Voroltinquo !
Faut pas s'enflammer.
Je n'ai pas réussi à faire fonctionner tes codes, c'est un constat.

Je n'ai pas écrit que tes codes étaient mauvais. Bien loin de moi cette pensée !
Et si j'ai ouvert ce nouveau post c'est que je n'avais pas trouvé de solution qui fonctionne, ou que j'arrive à faire fonctionner.

Par ailleurs grâce à Damien, j'ai trouvé et son lien m'a permis de creuser plus loin et voici ce que j'ai trouvé et qui fonctionne pour ce que j'ai à faire.

pour convertir des éléments d'une chaine en binaire sur _bits, Tu m'as proposé:
FONCTIONDecimalVersBase(nNombreAConvertirest entier,nBaseest entier):chaîne
sResultatest une chaîne
nResteest entier

TANTQUEnNombreAConvertir>=nBase
nReste=Modulo(nNombreAConvertir,nBase)
nNombreAConvertir-=nReste
nNombreAConvertir=nNombreAConvertir/nBase
sResultat=BaseSup9(nReste)+sResultat
FIN
sResultat=BaseSup9(nNombreAConvertir)+sResultat
RENVOYERsResultat


ET j'ai trouvé:
sBinaire est une chaîne UNICODE
nNumero est un entier sur 8 octets
nBit est un entier
POUR nBit = 1 _A_ 8 // 8,16,32,64 selon la taille de l'entier
sBinaire = nNumero[nBit]+sBinaire
FIN


Et pour faire le chemin inverse, à savoir passer de 8bits binaire en caractères ASCII, Tu m'as proposé:

FONCTIONBaseSup9(nResteest un entier):chaîne
SInReste<10ALORS
RENVOYERnReste
SINON
RENVOYERCaract(55+nReste)
FIN

J'ai trouvé
BiCH est une chaîne UNICODE
Ni est un entier
POUR k=1 A Ni PAS 8 // renverse la chaine
BiCH=Milieu(sBinaire,k, 8 )
BiCH=CaractUnicode(Val(BiCH,2))
FIN

Et pour ce qui me concerne, j'ai maintenant la solution à mon probleme et je peux poursuivre mon projet.

Encore merci à tous.
Membre enregistré
501 messages
Posté le 18 juin 2018 - 22:06
1-Mon code permet de convertir un décimal vers une base quelconque de 2 à 36
2-BaseSup9 permet de traiter les base supérieure à 10 comme l'hexal par exemple, où l'on utilise en plus des chiffre des lettres e.g. FF[16]=256[10]

--
Il y a peut être plus simple, mais, ça tourne
Membre enregistré
133 messages
Posté le 19 juin 2018 - 07:44
Tu as certainement raison!
Mon niveau en développement est certainement loin du tien.
Mais tes codes et tes réponses ne m'ont pas permis d'avancer.
Et j'ai trouvé plus simple ailleurs.
Bon vent !