web-dev-qa-db-fra.com

Convertir UTF-8 en chaîne base64

J'essaie de convertir UTF-8 à base64 chaîne.

Exemple: j'ai "abcdef ==" dans UTF-8. C'est en fait une "représentation" d'un base64 chaîne.

Comment puis-je récupérer un "abcdef ==" base64chaîne (notez que je ne veux pas de "traduction" abcdef == "" de UTF-8, Je veux obtenir une chaîne encodée en base64 qui est "abcdef ==").

EDIT
Comme ma question ne semble pas claire, voici une reformulation:

Mon tableau d'octets (disons que je le nomme A) est représenté par un base64 chaîne. Conversion de A en base64 me donne "abcdef ==".

Cette représentation de chaîne est envoyée via un socket en UTF-8 (notez que la représentation de chaîne est exactement la même en UTF-8 et en base64). Je reçois donc un message UTF-8 contenant "quel que soit/abcdef ==/quel que soit" en UTF-8.

J'ai donc besoin de récupérer la chaîne base64 "abcedf ==" de ce message de socket pour obtenir A.

J'espère que c'est plus clair!

47
Nicolas Voron

Il est un peu difficile de dire ce que vous essayez d’atteindre, mais en supposant que vous essayez d’obtenir une chaîne Base64 qui est décodée lorsque est abcdef==, Ce qui suit devrait fonctionner:

byte[] bytes = Encoding.UTF8.GetBytes("abcdef==");
string base64 = Convert.ToBase64String(bytes);
Console.WriteLine(base64);

Cela produira: YWJjZGVmPT0= Qui est abcdef== Codé en Base64.

Edit:

Pour décoder une chaîne Base64, utilisez simplement Convert.FromBase64String(). Par exemple.

string base64 = "YWJjZGVmPT0=";
byte[] bytes = Convert.FromBase64String(base64);

À ce stade, bytes sera un byte[] (Pas un string). Si nous savons que le tableau d'octets représente une chaîne en UTF8, vous pouvez le reconvertir sous la forme chaîne à l'aide de:

string str = Encoding.UTF8.GetString(bytes);
Console.WriteLine(str);

Cela produira la chaîne d'entrée d'origine, abcdef== Dans ce cas.

136
Iridium