Voici le Système Hexadécimale Bibi-binaire mis en pratique.
Codage, décodage.
Code : Tout sélectionner
; Code crée par Monsieur Dieppedalle David le 09/03/2016.
; Système Hexadécimale Bibi-binaire.
Procedure.s InverserChaine(Chaine.s, DelimiteurChaine$ = " ")
Protected Phrase.s = "", Premier = 1
For i = CountString(Chaine, DelimiteurChaine$) + 1 To 1 Step - 1
If Premier = 0
Phrase + DelimiteurChaine$
Else
Premier = 0
EndIf
Phrase + StringField(Chaine, i, DelimiteurChaine$)
Next
ProcedureReturn Phrase
EndProcedure
Procedure.s DecimalToBibiBinaire(Nombre.q)
ChaineHexadecimalBibiBinaire$ = "HO.HA.HE.HI.BO.BA.BE.BI.KO.KA.KE.KI.DO.DA.DE.DI"
Repeat
Division.q = Nombre.q / 16
Reste.q = Nombre.q - (Division.q * 16)
Sortie$ + StringField(ChaineHexadecimalBibiBinaire$, Reste.q + 1, ".") + "."
Nombre.q = Division.q
Until Division.q < 16
If Division.q > 0
Sortie$ + StringField(ChaineHexadecimalBibiBinaire$, Division.q + 1, ".")
EndIf
ProcedureReturn RemoveString(InverserChaine(Sortie$, "."), ".")
EndProcedure
Procedure.q BibiBinaireToDecimal(ChaineBibiBinaire$)
ChaineHexadecimalBibiBinaire$ = "HO.HA.HE.HI.BO.BA.BE.BI.KO.KA.KE.KI.DO.DA.DE.DI"
If ChaineBibiBinaire$ > ""
For Index.i = 1 To Len(ChaineBibiBinaire$) Step 2
Groupe$ = Mid(ChaineBibiBinaire$, Index.i, 2)
For I.i = 1 To CountString(ChaineHexadecimalBibiBinaire$, ".") + 1
If StringField(ChaineHexadecimalBibiBinaire$, I.i, ".") = Groupe$
Chiffre.q = I - 1
Break
EndIf
Next
NombreSortie.q * 16
NombreSortie.q + Chiffre.q
Next
ProcedureReturn NombreSortie.q
Else
ProcedureReturn 0
EndIf
EndProcedure
Nombre.q = 9223372036854775807
Debug DecimalToBibiBinaire(Nombre.q)
Debug BibiBinaireToDecimal("BIDIDIDIDIDIDIDIDIDIDIDIDIDIDIDI")