web-dev-qa-db-ja.com

UTF-8をbase64文字列に変換します

UTF-8base64文字列に変換しようとしています。

例:UTF-8に「abcdef ==」があります。実際には、base64文字列の「表現」です。

"abcdef ==" base64文字列を取得するにはどうすればよいですか(UTF-8から "abcdef ==" "translation"が必要ないことに注意してください。base64 which is "abcdef ==")。

編集
私の質問は不明確であるように思われるので、ここに再編成があります:

私のバイト配列(Aと名付けましょう)は、base64文字列で表されます。 Aをbase64に変換すると、「abcdef ==」が得られます。

この文字列表現は、UTF-8のソケットを介して送信されます(文字列表現はUTF-8とbase64でまったく同じであることに注意してください)。そのため、UTF-8で「whatever/abcdef ==/whatever」を含むUTF-8メッセージを受け取ります。

Aを取得するには、このソケットメッセージからbase64 "abcedf =="文字列を取得する必要があります。

これがより明確であることを願っています!

47
Nicolas Voron

何を達成しようとしているのかを伝えるのは少し難しいですが、decodedabcdef==、以下が機能するはずです。

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

これは出力します:YWJjZGVmPT0=これはabcdef== Base64でエンコードされています。

編集:

Base64文字列をデコードするには、単にConvert.FromBase64String()を使用します。例えば。

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

この時点で、bytesbyte[]になります(stringではありません)。バイト配列がUTF8の文字列を表していることがわかっている場合は、次を使用して文字列形式に戻すことができます。

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

これにより、元の入力文字列、この場合はabcdef==が出力されます。

136
Iridium