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

C#中实现多Base64字符串与单字节数组互转的方法

多Base64字符串与单字节数组互转方案

需求说明

实现两个方法,将多个Base64编码字符串合并为单个字节数组,且能将该字节数组还原为原多个字符串,要求不能使用二维字节数组。考虑过插入分隔符的方式,想了解是否存在字节标准分隔符。

方案解析

不存在能完全避免冲突的“标准字节分隔符”——因为Base64解码后的字节可以是0-255的任意值,任何单个字节都有可能出现在原字符串解码后的字节流中,用分隔符的话会有拆分错误的风险。更可靠的方案是给每个字符串对应的字节块添加长度前缀,通过长度信息来准确拆分数据,无需依赖分隔符。

代码实现

合并方法(TransformStringsIntoBytes)

该方法先将每个Base64字符串解码为字节数组,然后把每个字节数组的长度(用4字节int存储,保证跨平台兼容性)和字节内容依次写入最终的合并字节数组:

public byte[] TransformStringsIntoBytes(string[] base64EncodedStrings)
{
    using (var ms = new MemoryStream())
    using (var writer = new BinaryWriter(ms))
    {
        // 先写入字符串总数,方便还原时知道要读取多少个块
        writer.Write(base64EncodedStrings.Length);
        
        foreach (var str in base64EncodedStrings)
        {
            if (string.IsNullOrEmpty(str))
            {
                writer.Write(0);
                continue;
            }
            
            byte[] bytes = Convert.FromBase64String(str);
            // 写入当前字节块的长度
            writer.Write(bytes.Length);
            // 写入字节块内容
            writer.Write(bytes);
        }
        
        return ms.ToArray();
    }
}

拆分方法(TransformBytesIntoStrings)

修正原方法的参数错误(应该接收byte[]而非string[]),该方法先读取字符串总数,再依次读取每个块的长度和对应字节内容,最后编码回Base64字符串:

public string[] TransformBytesIntoStrings(byte[] byteArray)
{
    using (var ms = new MemoryStream(byteArray))
    using (var reader = new BinaryReader(ms))
    {
        int count = reader.ReadInt32();
        string[] result = new string[count];
        
        for (int i = 0; i < count; i++)
        {
            int length = reader.ReadInt32();
            if (length == 0)
            {
                result[i] = string.Empty;
                continue;
            }
            
            byte[] bytes = reader.ReadBytes(length);
            result[i] = Convert.ToBase64String(bytes);
        }
        
        return result;
    }
}

方案优势

  • 无需担心分隔符冲突问题,拆分逻辑完全可靠
  • 支持空字符串的处理
  • 用BinaryWriter和BinaryReader处理长度,保证数据在不同平台下的一致性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 05:32:12