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