Cherche fonction de conversion bin to char et char to bin

Cherche fonction de conversion bin to char et char to bin - VB/VBA/VBS - Programmation

Marsh Posté le 09-08-2002 à 19:33:43    

Si possible en vbs est -ce que vous avez un exemple, c'est pour implementer dans un programme de cretation de divx. Et 'ai la fleme de le faire.
 
 
Sinon comment on fait une fois qu'on la chaine transformée en binaire pour l'écrire directemnt dans un fichier et pas comme un simple txt dans un fichier.
 
ldivx
Merci d'avance

Reply

Marsh Posté le 09-08-2002 à 19:33:43   

Reply

Marsh Posté le 15-08-2002 à 04:13:10    

Précise.
Tu veux trandformer une chaîne de caractères faite de '0' et '1' en sa valeur binaire ?


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
Reply

Marsh Posté le 15-08-2002 à 12:09:44    

Dans VirtualDub il peut generer des batch mais comme le logiciel en lui meme ne connait pas les valeurs du codecs il les recuperes codeés.
 
voici une des chaines.
 
GAEAAMAzBwDQBwAACgAAABQAAAAsAQAADAAAAAIAAAAFAAAAAgAAAJABAAAAAAAAAAAAABBmkQVkAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAyAAAAAAAAAAAAAAAAAACgmZnJPwAAAKCZmck/QAAAAAEAAACAAAAAAAAAAAAAAAAAAAAAAAAAAIACAADgAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAD/////BAAAAGU6XGxvcmRzXGxvcmRzLmxvZwBjOlx0ZXN0LmRpdngAZTpcbG9yZHNcbG9yZHMuYmluAGk=
 
 
Voici une chaîne décodé en binaire ( tronquée juste pour ex=
0001100000000001000001010000000001110000000....................010001100110001011100110110001101111011001110000000001100011001110100101110001110100011010011000101110011000100110100101101110000000000110100100100100
 
Et voici la fonction de décodage
et oui j'y suis arrivée car j'avais réussi à trouver de la doc
 
chainepass="GAEAAAAAAADQBwAACgAAABQAAAD6AAAADAAAAAIAAAAFAAAAAgAAACgAAAAAAAAAAAAAAAAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAyAAAAAAAAAAAAAACamZmZmZnJP5qZmZmZmck/QAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAgAIAAOABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAD/////AQAAAEM6XGRpdnhwYXNzLmxvZwBjOlx0ZXN0LmRpdngAYzpcbXZpbmZvLmJpbgBp"
 
 
 
 
 
 
 
lngfpass=len(chainepass)
 
 
Rem -----------------------------------------
Rem Decodage chaine premiere passe
Rem -----------------------------------------
 
Dim fpassbin, spassbin
 
 
 
Do  
 
pos=pos+1
MyVar=""
MyVar = Mid(chainepass,pos,1)  
 
Select Case MyVar
 
case "A" result="000000"
case "B" result="000001"
case "C" result="000010"
case "D" result="000011"
case "E" result="000100"
case "F" result="000101"
case "G" result="000110"
case "H" result="000111"
case "I" result="001000"
case "J" result="001001"
case "K" result="001010"
case "L" result="001011"
case "M" result="001100"
case "N" result="001101"
case "O" result="001110"
case "P" result="001111"
case "Q" result="010000"
case "R" result="010001"
case "S" result="010010"
case "T" result="010011"
case "U" result="010100"
case "V" result="010101"
case "W" result="010110"
case "X" result="010111"
case "Y" result="011000"
case "Z" result="011001"
case "a" result="011010"
case "b" result="011011"
case "c" result="011100"
case "d" result="011101"
case "e" result="011110"
case "f" result="011111"
case "g" result="100000"
case "h" result="100001"
case "i" result="100010"
case "j" result="100011"
case "k" result="100100"
case "l" result="100101"
case "m" result="100110"
case "n" result="100111"
case "o" result="101000"
case "p" result="101001"
case "q" result="101010"
case "r" result="101011"
case "s" result="101100"
case "t" result="101101"
case "u" result="101110"
case "v" result="101111"
case "w" result="110000"
case "x" result="110001"
case "y" result="110010"
case "z" result="110011"
case "0" result="110100"
case "1" result="110101"
case "2" result="110110"
case "3" result="110111"
case "4" result="111000"
case "5" result="111001"
case "6" result="111010"
case "7" result="111011"
case "8" result="111100"
case "9" result="111101"
case "+" result="111110"
case "/" result="111111"
     End Select
 
fpassbin=fpassbin&result
Loop Until pos=lngfpass
 
NB (c'est en vbs)
Maintenant je cree la fonction d'edition du binaire et de recodage)
Comme quoi comme on chercher  on peut que trouver
 
 
 

Reply

Marsh Posté le 17-08-2002 à 01:36:31    

Tiens, j'avais tenté de modifier cette chaîne... certains paramètres évoluent bizarrement.
Leur valeur interne n'est pas celle affichée par les contrôles. Peut-être même qu'il y a des flottants ?
 
Vu qu'elle est de toutre façons si longue, ils auraient pu mettre de l'hexadécimal !
 
Pour réencoder, on fait l'inverse:

TextIn = ...
TextOut = ""
LenTextIn = Len(TextIn)
pos = 1
While pos < LenTextIn
   TextInChunk = Mid(TextIn, pos, 6)
   Select Case TextInChunk
      Case "000000": Value = "A"
      Case "000001": Value = "B"
      Case "000010": Value = "C"
      Case "000011": Value = "D"
      Case "000100": Value = "E"
      Case "000101": Value = "F"
      Case "000110": Value = "G"
      Case "000111": Value = "H"
      Case "001000": Value = "I"
      Case "001001": Value = "J"
      Case "001010": Value = "K"
      Case "001011": Value = "L"
      Case "001100": Value = "M"
      Case "001101": Value = "N"
      Case "001110": Value = "O"
      Case "001111": Value = "P"
      Case "010000": Value = "Q"
      Case "010001": Value = "R"
      Case "010010": Value = "S"
      Case "010011": Value = "T"
      Case "010100": Value = "U"
      Case "010101": Value = "V"
      Case "010110": Value = "W"
      Case "010111": Value = "X"
      Case "011000": Value = "Y"
      Case "011001": Value = "Z"
      Case "011010": Value = "a"
      Case "011011": Value = "b"
      Case "011100": Value = "c"
      Case "011101": Value = "d"
      Case "011110": Value = "e"
      Case "011111": Value = "f"
      Case "100000": Value = "g"
      Case "100001": Value = "h"
      Case "100010": Value = "i"
      Case "100011": Value = "j"
      Case "100100": Value = "k"
      Case "100101": Value = "l"
      Case "100110": Value = "m"
      Case "100111": Value = "n"
      Case "101000": Value = "o"
      Case "101001": Value = "p"
      Case "101010": Value = "q"
      Case "101011": Value = "r"
      Case "101100": Value = "s"
      Case "101101": Value = "t"
      Case "101110": Value = "u"
      Case "101111": Value = "v"
      Case "110000": Value = "w"
      Case "110001": Value = "x"
      Case "110010": Value = "y"
      Case "110011": Value = "z"
      Case "110100": Value = "0"
      Case "110101": Value = "1"
      Case "110110": Value = "2"
      Case "110111": Value = "3"
      Case "111000": Value = "4"
      Case "111001": Value = "5"
      Case "111010": Value = "6"
      Case "111011": Value = "7"
      Case "111100": Value = "8"
      Case "111101": Value = "9"
      Case "111110": Value = "+"
      Case "111111": Value = "/"
   End Select
   TextOut = TextOut & Value
   pos = pos + 6
Loop


Mais:
D'une part on peut peut-être faire mieux.
D'autre part il te faudra sûrement des fonctions de conversion entier<->chaîne binaire.
 
Voici les miennes en VB6:

Rem Convertit une chaîne de 0 et de 1 en sa valeur binaire.
Rem Maximum 32 chiffres, chaîne vide = 0.
Function StrBin2Val(StrBin As String) As Long
   Dim Pos As Integer
   Dim Weight As Long
   
   StrBin2Val = 0
   Pos = Len(StrBin)
   Weight = 1: Rem Valeur du bit en Pos dans StrBin
   If Pos > 32 Then Error 65535: Rem plus de 32 chiffres binaires !
   Do
      Select Case Mid$(StrBin, Pos, 1)
         Case "0":
         Case "1": StrBin2Val = StrBin2Val + Weight
         Case Else: Error 65535Rem Pas un chiffre binaire !
      End Select
      If Pos <= 1 Then Exit Do
      Rem préparer le bit suivant
      Pos = Pos - 1
      If Weight = 1073741824 Then
         Weight = -2147483648#: Rem *2 donnerait un overflow
      Else
         Weight = Weight * 2
      End If
   Loop
End Function

Rem Convertit une valeur binaire 32 bits en chaîne de 32 0 et/ou 1.
Function Val2StrBin(ByVal Val As Long) As String
   Dim Count As Integer
   
   Val2StrBin = ""
   For Count = 1 To 32
      Val2StrBin = IIf(Val Mod 2 = 1, "1", "0" ) & Val2StrBin
      Rem Val2StrBin = IIf(Val Mod Weight > 0, "1", "0" ) & Val2StrBin
      Rem Val = Val \ Weight * Weight
      If Val < 0 Then
         Val = Val + 2147483648#: Rem Gestion du bit de signe
      Else
         Val = Val \ 2
      End If
   Next
End Function


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed