C#怎么进行Base64编码解码 C# Base64转换方法

C#中Base64编解码使用Convert类,字符串需先用UTF-8转字节数组再编码,解码则逆向操作;二进制数据可直接编解码;Base64非加密,长度增约33%,需校验格式并清理空白符。

在C#中进行Base64编码和解码非常简单,.NET内置的Convert类就提供了直接支持,无需额外引用或安装包。

Base64编码:字符串 → Base64字符串

适用于将普通文本(如JSON、XML、密码等)转为安全传输格式。注意:编码前需确保原始字符串用指定编码(通常是UTF-8)转为字节数组。

  • 使用Encoding.UTF8.GetBytes()将字符串转为字节数组
  • 调用Convert.ToBase64String(bytes)得到Base64字符串

示例:

string original = "Hello 世界";
byte[] bytes = Encoding.UTF8.GetBytes(original);
string base64 = Convert.ToBase64String(bytes); // 输出:SGVsbG8g5L2g5aW9

Base64解码:Base64字符串 → 原始字符串

将接收到的Base64字符串还原为原始内容。关键点是必须用与编码时相同的编码方式(如UTF-8)还原字符串。

  • Convert.FromBase64String(base64)转回字节数组
  • 再用Encoding.UTF8.GetString(bytes)转为字符串

示例:

string base64 = "SGVsbG8g5L2g5aW9";
byte[] bytes = Convert.FromBase64String(base64);
string original = Encoding.UTF8.GetString(bytes); // 输出:Hello 世界

处理二进制数据(如图片、文件)

Base64常用于嵌入图片(data URI)、上传附件等场景。此时直接操作字节数组即可,无需经过字符串中间环节。

  • 读取文件:File.ReadAllBytes("logo.png")
  • 编码:Convert.ToBase64String(fileBytes)
  • 解码后保存:File.WriteAllBytes("copy.png", Convert.FromBase64String(base64))

注意事项和常见问题

Base64不是加密,只是编码,不可用于保密;长度会增加约33%;输入字符串必须是合法Base64格式,否则FromBase64String会抛FormatException

  • 校验Base64格式可用正则^[A-Za-z0-9+/]*={0,2}$粗略判断
  • 含空格或换行的Base64需先清理(base64.Replace(" ", "").Replace("\r", "").Replace("\n", "")
  • 解码失败时优先检查是否被截断、是否混入HTML标签或引号

基本上就这些。只要记住“字符串→字节→Base64”和“Base64→字节→字符串”这两条主线,配合UTF-8统一编码,就不会出错。