String et byte[] [Résolu]

Messages postés
189
Date d'inscription
vendredi 28 mai 2004
Dernière intervention
27 novembre 2015
- - Dernière réponse : babe59
Messages postés
189
Date d'inscription
vendredi 28 mai 2004
Dernière intervention
27 novembre 2015
- 25 janv. 2008 à 09:32
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
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
4947
Date d'inscription
lundi 17 février 2003
Dernière intervention
14 février 2014
54
3
Merci
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]

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 86 internautes nous ont dit merci ce mois-ci

Commenter la réponse de sebmafate
Messages postés
1025
Date d'inscription
mardi 4 février 2003
Dernière intervention
7 juin 2010
65
3
Merci
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)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 86 internautes nous ont dit merci ce mois-ci

Commenter la réponse de SharpMao
Messages postés
4947
Date d'inscription
lundi 17 février 2003
Dernière intervention
14 février 2014
54
0
Merci
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]
Commenter la réponse de sebmafate
Messages postés
189
Date d'inscription
vendredi 28 mai 2004
Dernière intervention
27 novembre 2015
0
Merci
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
Commenter la réponse de babe59
Messages postés
189
Date d'inscription
vendredi 28 mai 2004
Dernière intervention
27 novembre 2015
0
Merci
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
Commenter la réponse de babe59

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.