PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV (versiones precedentes) → ASCII vers Binaire 8bits et inversement
ASCII vers Binaire 8bits et inversement
Iniciado por Fred2355, 17,may. 2018 12:54 - 7 respuestas
Miembro registrado
231 mensajes
Popularité : +7 (7 votes)
Publicado el 17,mayo 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.
Miembro registrado
281 mensajes
Popularité : +24 (26 votes)
Publicado el 19,mayo 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
Miembro registrado
231 mensajes
Popularité : +7 (7 votes)
Publicado el 16,junio 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.
Miembro registrado
3.844 mensajes
Popularité : +227 (347 votes)
Publicado el 17,junio 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
Miembro registrado
3.844 mensajes
Popularité : +227 (347 votes)
Publicado el 17,junio 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
Mensaje modificado, 17,junio 2018 - 14:24
Miembro registrado
231 mensajes
Popularité : +7 (7 votes)
Publicado el 18,junio 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.
Miembro registrado
3.844 mensajes
Popularité : +227 (347 votes)
Publicado el 18,junio 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
Miembro registrado
231 mensajes
Popularité : +7 (7 votes)
Publicado el 19,junio 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 !