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


# html  # js  # json  # go  # 编码  # 字节  # 常见问题  # c#  # 安全传输  # .net  # xml  # 字符串  # copy  # 编解码  # 二进制数  # 适用于  # 再用  # 可直接  # 先用  # 原为  # 安装包  # 换行  # 这两条 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 网络优化76771 】 【 技术知识130152 】 【 IDC云计算60162 】 【 营销推广131313 】 【 AI优化88182 】 【 百度推广37138 】 【 网站推荐60173 】 【 精选阅读31334


相关推荐: Win11任务栏怎么固定应用 Win11将软件图标固定到底部【步骤】  Windows服务无法启动错误1067是什么_进程意外终止的解决方法  php中作用域操作符能访问私有静态属性吗_访问权限限制【指南】  Win10怎样设置闹钟贪睡时间 Win10闹钟贪睡时长设置【步骤】  如何使用 Selenium 正确获取篮球参考网站球员名单元素列表  如何在 Go 中可靠地测试含 time.Time 字段的结构体  如何使用Golang实现RPC序列化与反序列化_Golang RPC数据编码与解码方法  Laravel 查询 JSON 列:高效筛选包含数组中任意值的记录  Python函数接口稳定性_版本演进解析【指导】  如何使用Golang reflect检查方法数量_动态分析类型方法  Win11如何关闭小娜Cortana Win11禁用Cortana语音助手【优化】  c++怎么使用std::tuple存储多元组数据_c++ 11获取元素与解包操作【技巧】  php订单日志怎么导出excel_php导出订单日志到表格教程【教程】  Win10系统怎么查看显卡温度_Win10任务管理器GPU温度  Python文本编码与解码_跨平台解析说明【指导】  php485在macos下怎么配置_php485 macOS系统配置指南【解答】  Win10如何更改电脑休眠时间_Windows10电源和睡眠选项调整  Windows任务计划服务异常原因_任务调度失败的处理方案  Win11如何添加/删除输入法 Win11切换中英文输入法快捷键【设置】  c# 如何用c#实现一个支持优先级的任务队列  如何在Golang中解压文件_Golang compress/gzip解压操作方法  Golang如何实现基本的用户注册_Golang用户注册表单处理示例  Python网络日志追踪_请求定位解析【教程】  Win10路由器怎么隐藏ssid Win10隐藏wifi名称设置【指南】  Windows10如何更改计算机工作组_Win10系统属性修改Workgroup  win11如何清理传递优化文件 Win11为C盘瘦身删除更新缓存【技巧】  mac怎么查看wifi密码_MAC查看已连接WiFi密码方法【技巧】  如何在Golang中指定模块版本_使用go.mod控制版本号  如何使用Golang实现聊天室消息存档_存储聊天记录到文件  c# await 一个已经完成的Task会发生什么  Windows 11无法安全删除U盘提示设备正在使用中怎么办_Windows 11找出占用设备进程  Mac怎么开启“任何来源”_Mac安装未签名应用的设置方法【解决】  如何在Windows中创建新的用户账户?(标准与管理员)  Windows 11如何查看系统激活密钥_Windows 11使用CMD或PowerShell命令找回Product Key  Win11怎么更改计算机名_Windows11系统信息重命名设备教程  Mac怎么进行语音输入_Mac听写功能设置与使用【教程】  Drupal 中 HTML 链接被重复转义导致渲染异常的解决方案  Python安全爬虫设计_IP代理池与验证码识别策略解析  Windows音频驱动无声音原因解析_声卡驱动错误修复步骤  PythonWeb前后端整合项目教程_FastAPIReact完整实例  Win11任务栏怎么调到左边_Win11开始菜单居左设置教程【步骤】  Windows 11如何开启文件夹加密(EFS)_Windows 11文件属性中加密内容以保护数据  php会话怎么开启_session_start函数的作用与使用时机【方法】  如何在Golang中实现服务熔断与限流_Golang微服务容错与流控方法  c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗  Windows10如何彻底关闭自动更新_Win10服务与组策略双重禁用  如何使用Golang benchmark测量函数延迟_统计执行耗时  Win11怎么设置默认视频播放器_Windows 11关联媒体文件打开方式【步骤】  短链接还原php提示内存不足_调整PHP内存限制设置【技巧】  Mac的“预览”如何合并多个PDF_Mac文件处理技巧【效率】 

 2026-01-05

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

致胜网络推广营销网


致胜网络推广营销网

致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。

 915688610

 17370845950

 915688610@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.