begin process at 2012 02 11 17:50:47
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Algorithme

 > 

Compression, Split et Cryptage

 > 

Conversion de byte[]


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Conversion de byte[]

jeudi 30 novembre 2006 à 11:59:06 | Conversion de byte[]

nicolaslepot

Bonjour les amis,

en C#, il y a bien un objet qui permet de faire l'inversse de BitConverter...
Mais j'arrive pas à le retrouver.

byte[] bitEncoded = ...
...
...
string strEncoded = BitConverter.ToString(bitEncoded);
...
...
byte[] bitEncoded2 = ???????

Donc une fois que j'ai strEncoded, je voudrais le re-convertir pour de nouveau retrouver la même chose que bitEncoded en byteArray.

Merci d'avance,

Nico
jeudi 30 novembre 2006 à 12:31:11 | Re : Converssion de byte[]

MoDDiB

Convert.FromBase64String(); ?
jeudi 30 novembre 2006 à 13:53:37 | Re : Converssion de byte[]

sebmafate

Membre Club Administrateur CodeS-SourceS
tu peux tout simplement utiliser :

Pour encoder une chaine en byte[] :

string maString = "ceci est un test !";
byte[] b = Encoding.Default.GetBytes( maString );

pour décoder :
string ret = Encoding.Default.GetString( b );

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft MVP Visual C#]

jeudi 30 novembre 2006 à 14:20:16 | Re : Conversion de byte[]

nicolaslepot

Coucou,

merci pour vos réponses.

Modib :

> je viens d'essayer, mais j'ai une exeption : "caratère non valide dans une chaine base64".

> Je crois que Convert.FromBase64String(); est le contraire de Convert.ToBase64String(); car elle fonctionne bien l'une avec l'autre. Elle génère une chaine de caractères quelconques. Exemple :

Encrypted b64 (len=208) : AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAI1GmATuLGUWwqlcrxSrtgw
AAAAACAAAAAAADZgAAqAAAABAAAACV5Ot2zre7+2LmXTTqB++cAAAAAASAAACgAAAAEAAAAFU1gcVMse
sW7UWj7or2CcwQAAAAouRDE2E3fdlqQ5NWDOqe6hQAAACG2ygPQeZa+FjsYTZql7WfNBX0Sg==

> BitConverter.ToString(bitEncoded); génère une chaine de caractères qui représente de l'hexadécimal dirait-on. Exemple :

Encrypted bitconvert (len=461) : 01-00-00-00-D0-8C-9D-DF-01-15-D1-11-8
C-7A-00-C0-4F-C2-97-EB-01-00-00-00-23-51-A6-01-3B-8B-19-45-B0-AA-57-2B-C5-2A-ED-
83-00-00-00-00-02-00-00-00-00-00-03-66-00-00-A8-00-00-00-10-00-00-00-95-E4-EB-76
-CE-B7-BB-FB-62-E6-5D-34-EA-07-EF-9C-00-00-00-00-04-80-00-00-A0-00-00-00-10-00-0
0-00-55-35-81-C5-4C-B1-EB-16-ED-45-A3-EE-8A-F6-09-CC-10-00-00-00-A2-E4-43-13-61-
37-7D-D9-6A-43-93-56-0C-EA-9E-EA-14-00-00-00-86-DB-28-0F-41-E6-5A-F8-58-EC-61-36
-6A-97-B5-9F-34-15-F4-4A

sebmafate :

> J'aimerais bien pouvoir utiliser ta méthode qui m'a l'air bien plus abordable, mais je suis obligé d'utiliser
BitConverter.ToString() car un autre programme sur lequel je tente de m'aligner pour ajouter des possibilités utilise cette technique pour coder des chaînes dans un texte. L'ancien programme et le mien (le nouveau) devront pouvoir tous les deux travailler avec ces fichiers.

> Justement avec Encoding.??? est-ce que je ne pourrais pas y arriver ?

Merci encore pour votre intérêt,

nico

jeudi 30 novembre 2006 à 14:48:53 | Re : Conversion de byte[]

nicolaslepot

Pour avoir une idée de ce que contient le tableau de bit, je viens de faire ceci

Console.Write("Encrypted bit (len={0}) : ", bitEncoded.Length);
for (int i = 0; i < bitEncoded.Length; i++)
                Console.Write("{0}", bitEncoded[i].ToString() );

qui me donne pour résultat :

Encrypted bit (len=154) : 100020814015722312120917140122019279194151235100035811
66159139256917617087431974223713100002000003102001680001600019032157168159242231
71266323111223273252360000412800160000160001571261242511372391361037914419813581
22718756160006123821614020526015721122821217615021367200200001689210815883209481
163810133245214233152341524468179

> En cherchant le rapport avec ce qu'a fait la méthode BitConverter.ToString(), à savoir :

Encrypted bitconvert (len=461) : 01-00-00-00-D0-8C-9D-DF-01-15-D1-11-8
C-7A-00-C0-4F-C2-97-EB-01-00-00-00-23-51-A6-01-3B-8B-19-45-B0-AA-57-2B-C5-2A-ED-
83-00-00-00-00-02-00-00-00-00-00-03-66-00-00-A8-00-00-00-10-00-00-00-95-E4-EB-76
-CE-B7-BB-FB-62-E6-5D-34-EA-07-EF-9C-00-00-00-00-04-80-00-00-A0-00-00-00-10-00-0
0-00-55-35-81-C5-4C-B1-EB-16-ED-45-A3-EE-8A-F6-09-CC-10-00-00-00-A2-E4-43-13-61-
37-7D-D9-6A-43-93-56-0C-EA-9E-EA-14-00-00-00-86-DB-28-0F-41-E6-5A-F8-58-EC-61-36
-6A-97-B5-9F-34-15-F4-4A

Je constate ceci :
>   1   0      0    0     208    140   157   ...
>  01-00 - 00-00 -   D0  -  8C -  9D -...

on dirait une simple converssion du décimale vers l'hexadécimal.
seulement, je vois pas trop bien pq une fois ca se fait sur 1digit décimal et après sur 2 digit....

Je sais qu'il y a un truc avec Windows qui inverse les chiffres hexa je crois. C'est la différence avec bigEndian et litleedian non ?
si qq1 connait la règle et peut me la donner, il y a peut être moyen de frabiquer une méthode pour faire ce que je veux...

nico


jeudi 30 novembre 2006 à 16:54:38 | Re : Conversion de byte[]

nicolaslepot

Voilà j'ai fait des recherches,

byte[] bitEncoded = ...
...
...
string strEncoded = BitConverter.ToString(bitEncoded);
...
...
byte[] bitEncoded2 = ???????


Je pense que strEncoded contient la représentation hexadécimale de la converssion de bitEncoded en UTF-x où x est une des versions de UTF.
> UTF code en effet certait caractère sur 1, 2 ou 3 octets suivant les cas...

> Mais alors maintenant pour reconverir...
jeudi 30 novembre 2006 à 19:12:47 | Re : Conversion de byte[]

nicolaslepot

j'ai trouvé le rapport...

il faut lire la chaine hexa par deux chiffres, et convertir ces 2 chiffres en décimal.
Ce que je cherche à opbtenir n'est que la suite déciamale traduite de la chaine hexa.

 1  0  0  0 208 140 157 223   1  21 209  17 140 122  0 192  79 194 151 235  1  0  0  0 35 81
01-00-00-00- D0- 8C- 9D- DF- 01 -15- D1- 11- 8C- 7A-00- C0- 4F- C2- 97- EB-01-00-00-00-23-51



Voilou, alors plutôt que de me prendre la t^te j'ai pensé faire ma propre petite méthode. Mais là encore j'ai un os :

byte[] bitDecoded = new byte[strDecoded.Length / 2];
            for (int i = 0, b = 0; i < strDecoded.Length - 1; i++)
            {
                Console.WriteLine("- - - - - - - - -");
                string nbHex = "" + strDecoded[i] + strDecoded[i + 1];
                int nbDec = int.Parse(nbHex, System.Globalization.NumberStyles.HexNumber);
                for (int j = 0; j < nbDec.ToString().Length; j++, b++)
                    bitDecoded[b] = nbDec.ToString()[j];
            }


à la dernière ligne nbDec.toString()[j]; contient le premier caratère du chiffre décimale à insérer dans le tableau de byte. Evidement, le compilateur ne veut pas car il n'y a pas de conversion implicite de String vers Byte.

Comment je peux juste créer un byte qui à pour valeur le chiffre (sur 1 seul digit) qui se trouve dans un string ?

Merci d'avance (je me rends bien compte que le sujet est pénible),

nico

jeudi 30 novembre 2006 à 21:56:23 | Re : Conversion de byte[]

Bidou

Administrateur CodeS-SourceS
Euh, byte.TryParse() ???




-Blog-
vendredi 1 décembre 2006 à 04:02:55 | Re : Conversion de byte[]

Lutinore

Administrateur CodeS-SourceS

Salut,




// Le Tableau de départ.
byte[ ] tab1 = { 76, 117, 116, 105, 110, 111, 114, 101 };

// Transforme le tableau en chaine via BitConverter.
string str = BitConverter.ToString( tab1 );

// Affiche la chaine
Console.WriteLine( "Contenu de la chaine :\r\n" + str );

// On vire les tirets de la chaine.
string[ ] split = str.Split( '-' );

// Créer un nouveau tableau.
byte[ ] tab2 = new byte[ tab1.Length ];

// Parse les chaines hexa en byte.
for ( int i = 0; i < tab2.Length; i++ )
    tab2[ i ] = byte.Parse( split[ i ], NumberStyles.HexNumber ); // ou TryParse.

// Affiche le tableau en hexa.
Console.WriteLine( "\r\nContenu du tableau en hexa :" );

    foreach( byte b in tab2 )
        Console.Write( "{0:X} ", b );

// Pause.
Console.ReadLine( );

vendredi 1 décembre 2006 à 10:32:05 | Re : Conversion de byte[]

nicolaslepot

Coucou,

un tout grand merci les gars : le byte.Parse();

génial :)









Cette discussion est classée dans : conversion, byte, retrouver, bitencoded, bitconverter


Répondre à ce message

Sujets en rapport avec ce message

Conversion d'un int en byte[4] [ par RyoSaeba2 ] 'lut,je m'adresse à cette grande communauté de programmeurs et vous pose une question :Comment convertir un int en un tableau de 4 bytes (c#)?Merci po conversion string en int, byte, hexa [ par vinc524 ] C#bonjour, je cherche désespérémment un moyen pour convertir une chaine de caractere string en hexadecimal. En fait je voudrais le code ascii d'un car Conversion d'un Byte en Hexadecimal [ par akaii ] Bonjour, Tout est dans le titre je dois convertir une chaine de caractère en Byte puis en Hexadecimal j'ai actuellement un tableau de Byte[] contenan [C#] [.NET] Conversion d'un Byte en Hexadecimal [ par akaii ] Bonjour, Tout est dans le titre je dois convertir une chaine de caractère en Byte puis en Hexadecimal j'ai actuellement un tableau de Byte[] contenan Cryptage et problème de conversion de Byte[] [ par deve007 ] Bonjour , jai un  string que je doit obligatoirement convertir en tableau de Byte, cette conversion se passe mal voici l'exemple : jai conversion tableau de byte en image jpeg [ par laymouna98 ] salut à tous voila je recupere une image qui est stockée sur sql server en format image, je l'affecte a un tableau de byte (byte [] ) mais je ne vois Conversion byte en string et inversement [ par thomas750 ] Bonjour à tous,Voila, je debute en C#, et j'aurais besoin de convertir un tableau de byte en string (et inversement):Pour la conversion byte --> strin Conversion Hexadecimal to byte[ ] [ par Spawn3107 ] Bonjour tout le monde, j'ai un petit soucis concernant mon programme. Est-ce que quelqu'un sait comment je peut convertir le hexadecimal en un table conversion de text en byte [ par lesboulangeriessontferméeslelundi ] BonjourQuelqu'un sait y comment skon pourrait faire pour transformer le texte d'une text box en byte ... ça commence à m'én... (pour rester poli) bien lire un fichier binaire [ par ultrafil ] Salut, j'ai besoin de lire des données dans un fichier binaire.Mon problème c'est que je n'arrive pas à faire de conversion en byte[]Je m'explique, j'


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 10,421 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales