Page 1 sur 1

Convertir un chaine de caractère 8bits vers 7 Bits

Publié : dim. 23/mai/2010 16:01
par nico
Voilà, j'ai besoin de convertir une chaine de caractères hexa en une suite de 7 bits (ascii sur 7 bits)

Exemple: Test.s="D4F29C0E"

Je ne sais pas trop comment m'y prendre, si vous avez des pistes?

Re: Convertir un chaine de caractère 8bits vers 7 Bits

Publié : dim. 23/mai/2010 16:34
par lepiaf31
tu peux convertir la chaine en valeur comme cela:

Code : Tout sélectionner

Debug Val("$D4F29C0E")
Mais je ne comprends pas ce que tu veux dire quand tu parle d'une "suite de 7 bits".

Re: Convertir un chaine de caractère 8bits vers 7 Bits

Publié : dim. 23/mai/2010 17:59
par SPH
Je pense que nico veux que chaque caractere de sa chaine soit un octet de 7 bits et pas de 8.
Exemple, le "F" qui est 255 doit etre transformé en 127
C'est ca nico ?

Re: Convertir un chaine de caractère 8bits vers 7 Bits

Publié : dim. 23/mai/2010 19:04
par nico
Oui, au lieu d'avoir une série de plusieurs octets (8 bits), il faut décomposer en une série de 7 bits. Ce qui fait que 3 octets (28 bits) donnera 4 caractères de 7 octets (4*7=28).

J'ai réussi à faire un prog qui fonctionne:

Code : Tout sélectionner

Dim hexa.s(0)
Dim Binaire.s(0)

Chaine.s="D4F29C0E"

LongueurOctet.l=(Len(Chaine)/2)

ReDim hexa.s(LongueurOctet-1)

b.l=1

For a=0 To LongueurOctet-1
  hexa(a)="$"+Mid(Chaine,b,2)
  b=b+2
Next a

For a=0 To LongueurOctet-1
  Resultat.s=RSet(Bin(Val(hexa(a)), #PB_Byte),8,"0")+Resultat
Next a

b=Len(Resultat)-6

LongueurTexte.l= (Len(Resultat)/7)

ReDim Binaire.s(LongueurTexte-1)

For a=0 To LongueurTexte-1
  Binaire(a)="%"+Mid(Resultat,b,7)
  b=b-7
Next a

For a=0 To LongueurTexte-1
  Texte.s=Texte+ Chr(Val(Binaire(a)))
Next a

Debug Texte