Découper une chaîne Binaire en tronçon

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Lord Nelson
Messages : 355
Inscription : dim. 01/déc./2013 15:29

Découper une chaîne Binaire en tronçon

Message par Lord Nelson »

Bonsoir,

Voilà, je cherche à faire ceci:

Découper une chaîne Binaire en tronçon de cette façon-ci (Je ne sais pas comment ont appel ça)
1011010010011101100001011101010001101010011110101001010101010101010010010011101100101100
Après découpe = 10 110 100 100 1110 110000 10 1110 10 1000 110 10 100 11110 10 100 10 10 10 10 10 10 10 100 100 100 1110 1100 10 1100
J'ai fais se code pour faire se que je voulais, j'aimerais l'optimiser en travaillant pourquoi pas en mémoire, car Mid() est lent avec les grand chaînes et aussi ajouter une chaîne à une autre
Alors je me dis que travailler directement en mémoire serais bien plus rapide, vous en pensez quoi ?, comment faire ?

Comment optimiser se code au maximum ?:

Code : Tout sélectionner

; Découpe une chaîne binaire en tronsson, la chaîne binaire doit forcement commencer par un "1"
Procedure.s DecoupeBin(Bin$)
  
  SaveBin$ = Bin$
  
  ; Vérification de la chaîne binaire pour voir s'il elle commance par un "1".
  If Not Mid(Bin$, 1, 1) = "1"
    MessageRequester("Erreur dans la chaîne binaire...", "      La chaîne binaire doit commencer par un " + Chr(34) + "1" + Chr(34) + " !", 68)
    End
  EndIf
  
  ; Vérification de la chaîne binaire pour voir s'il elle contient uniquement des 0 et des 1.
  For Index = 1 To Len(Bin$)
    
    Caractere$ = Mid(Bin$, Index, 1)
    
    If Caractere$ <> "0" And Caractere$ <> "1"
      MessageRequester("Erreur dans la chaîne binaire...", "      La chaîne binaire doit comporter uniquement des 0 et des 1 !", 68)
      End
    EndIf
    
  Next
  
  Repeat
    
    If Len(Bin$) > 1
      
      If Mid(Bin$, 2, 1) = "0"
        Index = FindString(Bin$, "1", 2)
        
        If Index > 0
          Buffer$ = Mid(Bin$, 1, Index - 1)
        Else
          Buffer$ = Mid(Bin$, 1)
        EndIf
        
      ElseIf Mid(Bin$, 2, 1) = "1"
        
        For Index = 3 To Len(Bin$)
          
          Caractere$ = Mid(Bin$, Index, 1)
          
          If Caractere$ = "1"
            Continue
            
          ElseIf Caractere$ = "0"
            
            For Index = Index To Len(Bin$)
              
              Caractere$ = Mid(Bin$, Index, 1)
              
              If Caractere$ = "0"
                Continue
                
              ElseIf Caractere$ = "1"
                Break 2
                
              EndIf
              
            Next
            
          EndIf
          
        Next
        
        Buffer$ = Mid(Bin$, 1, Index -1)
        
      EndIf
      
    Else
      Buffer$ = Bin$
      
    EndIf
    
    BinDecoupe$ + Buffer$ + " "
    Position + Len(Buffer$)
    
    Buffer$ = ""
    
    Bin$ = Mid(Bin$, Index)
    
  Until Position = Len(SaveBin$)
  
  ProcedureReturn Mid(BinDecoupe$, 1, Len(BinDecoupe$) - 1)
  
EndProcedure

Bin$ = "111111100000001111010010011101100001011101010001101010011110101001010101010101010010010011101100101100"
Debug DecoupeBin(Bin$)

Bin$ = "10110100100111011000010111010100011010100111101010010101010101010100100100111011001011001"
Debug DecoupeBin(Bin$)

Bin$ = "1000001111110100011110111111100001010111110001111010000010101111011010100011110101001101001011010111010"
Debug DecoupeBin(Bin$)
Dernière modification par Lord Nelson le mar. 18/nov./2014 21:59, modifié 1 fois.
Avatar de l’utilisateur
falsam
Messages : 7317
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Découper une chaîne Binaire en tronsson

Message par falsam »

Un indice qui te montre comment décomposer plus facilement.

Code : Tout sélectionner

Buffer$ = "1011010010011101100001011101010001101010011110101001010101010101010010010011101100101100"
Bin$ = ReplaceString(Buffer$, "01", "0 1")

Debug bin$
ça va être plus facile pour décomposer ton "bin$" (Je n'ai pas dit binz hein ?)

pour le reste débrouille toi avec StringField :)
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Lord Nelson
Messages : 355
Inscription : dim. 01/déc./2013 15:29

Re: Découper une chaîne Binaire en tronsson

Message par Lord Nelson »

Terrible :)

Tsss :roll: , dire que faut toujours que je cherche compliquer alors
que certain trouve super simple, sérieux, j'ai la honte là :oops:

Merci beaucoup Falsam :wink: :)
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: Découper une chaîne Binaire en tronsson

Message par graph100 »

tronçon ...

Modifie ton titre de message s'il te plait.
Et active la correction orthographique de ton navigateur, au minimum
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Répondre