String et byte[] [Résolu]

Signaler
Messages postés
189
Date d'inscription
vendredi 28 mai 2004
Statut
Membre
Dernière intervention
27 novembre 2015
-
Messages postés
189
Date d'inscription
vendredi 28 mai 2004
Statut
Membre
Dernière intervention
27 novembre 2015
-
Bonjour,

Je voudrais stocker un tableau de byte dans une zone nvarchar d'une base SQL serveur. J'ai donc fait cela pour convertir mon tableau de byte en string :

for (
int i = 0; i < strByte.Length; i++)
{

str2 +=
String.Format(
"{0:0000}", strByte[i]);
}
Exemple  :
   strByte[0] = 97
   strByte[1] = 0
   strByte[2] = 122
Donnera
   str2 = "009700000122"

mais je n'arrive pas à faire le contraire (mettre ces paquets de 4 caractèreS dans un tableau de byte)

Merci

DT

5 réponses

Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
Etant donnée que tu es sous SQL Serveur pourquoi ne pas utiliser un champ image pour stocker tes bytes ?

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
64
Hello,

Oui, comme l'a dit Sebmafate, la meilleure solution est d'enregistrer directement tes bytes dans la base de données.

Si tu tiens vraiment à enregistrer ceci sous forme de string, un moyen est de passer par Base64 :

Convert.ToBase64String

Convert.FromBase64String

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
Et pourquoi ne pas utiliser tout simplement :

string System.Text.Encoding.Default.GetString( byte[] );

et

byte[] System.Text.Encoding.Default.GetBytes( string );

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
Messages postés
189
Date d'inscription
vendredi 28 mai 2004
Statut
Membre
Dernière intervention
27 novembre 2015

Pour être plus précis : mon tableau de bytes est en fait le résultat d'un cryptage d'une chaine de caractères. Chaîne que je dois stocker dans une table d'une base SQLServer.
J'ai utilisé au départ ce qui suit : 
new
UnicodeEncoding().GetString(CypherTexteByte);

et
new
UnicodeEncoding().GetBytes(CypherText)


Après stockage dans la base de données (colonne en nvarchar(250)), je ne suis plus capable de décrypter la zone. Elle semble donc être modifié

J'ai essayé en ASCII, UTF8 et UTF32 mais cela ne change rien. Le DEFAULT fonctionne mais le programme pourra tourner sur des PC de différents pays. Le DEFAULT risque donc de ne pas être partout identique (pour ce que j'en sais).
Mon idée est donc d'écrire les byte 'en clair' dans ma zone de texte... plus de problème de codage...

DT
Messages postés
189
Date d'inscription
vendredi 28 mai 2004
Statut
Membre
Dernière intervention
27 novembre 2015

Merci à vous deux, j'étais parti sur l'insertion dans une zone "image" préconisé par Sebmafate mais la solution de ToBase64String me convient parfaitement.

Merci encore

DT