You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Convert.ToBase64String方法输出值不正确的原因排查

问题分析与解决

你的问题核心是编码逻辑不匹配:

  • 当前代码直接对原始byte[]做Base64编码,得到的XlU8QD5FTUGDFH1uiIBXcA==是该操作的正确结果。
  • 但你预期的Base64,是先把byte[]转换成十六进制字符串,再对这个字符串的UTF-8字节做Base64编码的产物。

验证过程

拿你提供的输入byte[] {94, 85, 60, 64, 62, 69, 77, 65, 131, 20, 125, 110, 136, 128, 87, 112}来说:

  1. 转无分隔符的十六进制字符串:5E553C403E494D4183147D6E88805770
  2. 对这个字符串的UTF-8字节做Base64编码,正好得到你预期的MHg1RTU1M0M0MDNFNDU0RDQxODMxNDdENkU4ODgwNTc3MA==(开头的0x是额外拼接的,不影响核心逻辑)

修正代码

调整编码逻辑,先转十六进制字符串再做Base64编码:

byte[] originalBytes = SQLDataHelper.EncryptAddValue(modifiedField.Value[nameof(RecordHistoryField.PreviousValue)]);
// 1. 将byte[]转为无分隔符的十六进制字符串
string hexString = BitConverter.ToString(originalBytes).Replace("-", string.Empty);
// 2. 将十六进制字符串转为UTF-8字节数组
byte[] hexBytes = Encoding.UTF8.GetBytes(hexString);
// 3. 转换为目标Base64字符串
string output = Convert.ToBase64String(hexBytes);

内容的提问来源于stack exchange,提问作者gtighe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 15:06:20