C# で Base64 文字列をエンコード・デコードする代替方法
C# で Base64 文字列をエンコード・デコードする方法
Base64は、バイナリデータをテキスト形式に変換するためのエンコーディング方式です。C#では、System.Convert
クラスの静的メソッドを使用して、Base64文字列をエンコード・デコードすることができます。
エンコード
Convert.ToBase64String
メソッドを使用します。
byte[] data = new byte[] { 0x41, 0x42, 0x43 }; // ASCIIで"ABC"を表すバイト配列
string base64String = Convert.ToBase64String(data);
Console.WriteLine(base64String); // 出力: "QUJD"
デコード
string base64String = "QUJD";
byte[] data = Convert.FromBase64String(base64String);
string decodedString = Encoding.ASCII.GetString(data);
Console.WriteLine(decodedString); // 出力: "ABC"
注意:
- デコードする際に不正なBase64文字列が渡されると、
FormatException
がスローされます。 - Base64エンコードは、データのサイズを約4/3倍にします。
using System;
using System.Text;
namespace Base64Example
{
class Program
{
static void Main(string[] args)
{
// エンコードする文字列
string originalString = "Hello, World!";
// UTF-8エンコーディングでバイト配列に変換
byte[] data = Encoding.UTF8.GetBytes(originalString);
// Base64エンコード
string base64String = Convert.ToBase64String(data);
Console.WriteLine("エンコードされた文字列: " + base64String);
}
}
}
using System;
using System.Text;
namespace Base64Example
{
class Program
{
static void Main(string[] args)
{
// デコードするBase64文字列
string base64String = "SGVsbG8sIFdvcmxkIQ==";
// Base64デコード
byte[] data = Convert.FromBase64String(base64String);
// UTF-8デコーディングで文字列に変換
string decodedString = Encoding.UTF8.GetString(data);
Console.WriteLine("デコードされた文字列: " + decodedString);
}
}
}
解説:
Encoding.UTF8.GetBytes(originalString)
: 文字列をUTF-8エンコーディングでバイト配列に変換します。Convert.ToBase64String(data)
: バイト配列をBase64エンコードします。
Convert.FromBase64String(base64String)
: Base64文字列をバイト配列にデコードします。Encoding.UTF8.GetString(data)
: バイト配列をUTF-8デコーディングで文字列に変換します。
System.Text.Base64 クラスの使用
System.Text.Base64
クラスは、Base64エンコード・デコードのためのメソッドを提供します。
using System.Text;
string originalString = "Hello, World!";
byte[] data = Encoding.UTF8.GetBytes(originalString);
string base64String = Convert.ToBase64String(data);
string base64String = "SGVsbG8sIFdvcmxkIQ==";
byte[] data = Convert.FromBase64String(base64String);
string decodedString = Encoding.UTF8.GetString(data);
LINQ の Base64Encode と Base64Decode メソッドの使用
LINQの拡張メソッドとして、Base64Encode
とBase64Decode
が提供されています。
using System.Linq;
string originalString = "Hello, World!";
string base64String = originalString.ToBase64();
string base64String = "SGVsbG8sIFdvcmxkIQ==";
string decodedString = base64String.FromBase64();
拡張メソッドの作成
独自の拡張メソッドを作成して、Base64エンコード・デコードをより簡潔に記述することができます。
public static class StringExtensions
{
public static string ToBase64(this string str)
{
return Convert.ToBase64String(Encoding.UTF8.GetBytes(str));
}
}
public static class StringExtensions
{
public static string FromBase64(this string base64String)
{
return Encoding.UTF8.GetString(Convert.FromBase64String(base64S tring));
}
}
c# base64