Problème Codage / Décodage base 255
Publié : dim. 14/déc./2014 22:45
Salut,
Oui encore dans mes expériences...
J'ai créer deux procédure pour coder et décoder un nombre en base 10 vers 255 et inversement.
Je suis confronté à un problème lorsque le programme dois décoder le nombre en base 255 vers 10 quand il y a un Chr(0) dans la chaîne.
En gros, quand il trouve un Chr(0) dans la chaîne, il prends ça pour la fin de la chaîne et normale car c'est pure basic
qui est comme ça mais dans mon cas à moi, ça m’embarrasse bien car du coup plus rien ne fonctionne
Exemple avec le nombre 256, à partir de 65536 jusqu'à 65792...
Si seulement je pouvais lui dire de partir, à partir du Chr(1) jusqu'à Chr(255) et de pas utiliser de Chr(0) mais là je coince j'avoue
Si quelqu’un pouvais me filer un ch'ti coup de pouce, se serait superbe
Merci.
Voici le code:
Oui encore dans mes expériences...
J'ai créer deux procédure pour coder et décoder un nombre en base 10 vers 255 et inversement.
Je suis confronté à un problème lorsque le programme dois décoder le nombre en base 255 vers 10 quand il y a un Chr(0) dans la chaîne.
En gros, quand il trouve un Chr(0) dans la chaîne, il prends ça pour la fin de la chaîne et normale car c'est pure basic
qui est comme ça mais dans mon cas à moi, ça m’embarrasse bien car du coup plus rien ne fonctionne


Exemple avec le nombre 256, à partir de 65536 jusqu'à 65792...
Si seulement je pouvais lui dire de partir, à partir du Chr(1) jusqu'à Chr(255) et de pas utiliser de Chr(0) mais là je coince j'avoue

Si quelqu’un pouvais me filer un ch'ti coup de pouce, se serait superbe

Merci.
Voici le code:
Code : Tout sélectionner
; Comvertie un nombre base 10 vers base 255 en octet.
Procedure.S CodeNombreBase255(Nombre.Q)
Protected NombreBase255$ = ""
Protected NombreSortie.Q = 0
Repeat
NombreSortie.Q = Nombre.Q / 256
NombreBase255$ = InsertString(NombreBase255$, Chr(Nombre.Q - (NombreSortie.Q * 256)), 1)
Nombre.Q = NombreSortie.Q
Until Nombre.Q = 0
ProcedureReturn NombreBase255$
EndProcedure
; Comvertie un nombre base 255 en octet vers un nombre base 10.
Procedure.Q DecodeNombreBase255(Base255$)
Protected NombreSortie.Q = 0
Protected Valeur.I = 0
If Base255$ > ""
For Index = 1 To Len(Base255$)
Valeur.I = Asc(Mid(Base255$, Index, 1))
If Valeur.I = 0
NombreSortie.Q * 256
ElseIf Valeur.I > 0
NombreSortie.Q * 256
NombreSortie.Q + Valeur.I
EndIf
Next
ProcedureReturn NombreSortie.Q
Else
ProcedureReturn 0
EndIf
EndProcedure
Nombre.Q = 256
Base255$ = CodeNombreBase255(Nombre.Q)
Base10 = DecodeNombreBase255(Base255$)
Debug Nombre.Q
Debug Base255$
Debug Base10