文字列を指定して base64 でエンコードされた文字列を返すにはどうすればよいですか?
base64 でエンコードされた文字列を文字列にデコードするにはどうすればよいですか?
1112091 次
11 に答える
2085
エンコード
public static string Base64Encode(string plainText) {
var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(plainText);
return System.Convert.ToBase64String(plainTextBytes);
}
デコード
public static string Base64Decode(string base64EncodedData) {
var base64EncodedBytes = System.Convert.FromBase64String(base64EncodedData);
return System.Text.Encoding.UTF8.GetString(base64EncodedBytes);
}
于 2012-07-31T15:06:24.827 に答える
55
私は実装をいくつかのきちんとした機能と共有しています:
- Encoding クラスの拡張メソッドを使用します。理論的根拠は、(UTF8 だけでなく) さまざまなタイプのエンコーディングをサポートする必要があるかもしれないということです。
- もう 1 つの改善点は、null エントリの null 結果で正常に失敗することです。これは、実際のシナリオで非常に役立ち、X=decode(encode(X)) の同等性をサポートします。
注意: 拡張メソッドを使用するには、キーワード (この場合は) を使用して名前空間を(!) インポートする必要があることに注意してください。using
using MyApplication.Helpers.Encoding
コード:
namespace MyApplication.Helpers.Encoding
{
public static class EncodingForBase64
{
public static string EncodeBase64(this System.Text.Encoding encoding, string text)
{
if (text == null)
{
return null;
}
byte[] textAsBytes = encoding.GetBytes(text);
return System.Convert.ToBase64String(textAsBytes);
}
public static string DecodeBase64(this System.Text.Encoding encoding, string encodedText)
{
if (encodedText == null)
{
return null;
}
byte[] textAsBytes = System.Convert.FromBase64String(encodedText);
return encoding.GetString(textAsBytes);
}
}
}
使用例:
using MyApplication.Helpers.Encoding; // !!!
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Test1();
Test2();
}
static void Test1()
{
string textEncoded = System.Text.Encoding.UTF8.EncodeBase64("test1...");
System.Diagnostics.Debug.Assert(textEncoded == "dGVzdDEuLi4=");
string textDecoded = System.Text.Encoding.UTF8.DecodeBase64(textEncoded);
System.Diagnostics.Debug.Assert(textDecoded == "test1...");
}
static void Test2()
{
string textEncoded = System.Text.Encoding.UTF8.EncodeBase64(null);
System.Diagnostics.Debug.Assert(textEncoded == null);
string textDecoded = System.Text.Encoding.UTF8.DecodeBase64(textEncoded);
System.Diagnostics.Debug.Assert(textDecoded == null);
}
}
}
于 2016-03-17T20:46:33.613 に答える