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

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

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

Message 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?
lepiaf31
Messages : 510
Inscription : dim. 25/mars/2007 13:44
Localisation : Toulouse, France
Contact :

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

Message 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".
Avatar de l’utilisateur
SPH
Messages : 4949
Inscription : mer. 09/nov./2005 9:53

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

Message 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 ?

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

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

Message 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
Répondre