Преобразование строки 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.
Надеюсь, это станет более ясным!
Ответы
Ответ 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==
.