Подтвердить что ты не робот

Преобразование строки UTF-8 в base64

Я пытаюсь преобразовать строку UTF-8 в base64.

Пример: у меня есть "abcdef ==" в UTF-8. Это фактически "представление" строки base64.

Как я могу получить строку "abcdef ==" base64 (обратите внимание, что мне не нужен "abcdef ==" "перевод" из UTF-8, я хочу получить строку, закодированную в base64 который "abcdef ==" )

ИЗМЕНИТЬ Как мой вопрос кажется неясным, вот переформулировка:

Мой байтовый массив (допустим, я называю его A) представлен строкой base64. Преобразование A в base64 дает мне "abcdef =="

Это строковое представление отправляется через сокет в UTF-8 (обратите внимание, что строковое представление точно совпадает с UTF-8 и base64). Поэтому я получаю сообщение UTF-8, которое содержит "any/abcdef ==/whatever" в UTF-8.

Поэтому мне нужно получить строку base64 "abcedf ==" из этого сообщения сокета, чтобы получить A.

Надеюсь, это станет более ясным!

4b9b3361

Ответ 1

Немного сложно сказать, чего вы пытаетесь достичь, но при условии, что вы пытаетесь получить строку Base64, которая при декодировании abcdef== должна работать:

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

Это выведет: YWJjZGVmPT0=, который abcdef== закодирован в Base64.

Edit:

Чтобы декодировать строку Base64, просто используйте Convert.FromBase64String(). Например.

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

В этот момент bytes будет byte[] (не a string). Если мы знаем, что массив байтов представляет строку в UTF8, то его можно преобразовать обратно в строчную форму, используя:

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

В этом случае будет выводиться исходная строка ввода abcdef==.