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统一编码,就不会出错。










