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

如何将字节字符串转换为字节数组?C#场景下的字节无损还原问题

如何将字节数组无损转换为字符串并还原?

兄弟,你当前的代码存在一个关键问题:在sender方法里,"" + pictureArray这个操作并没有把字节数组的实际内容转换成字符串——它只是调用了byte[]的默认ToString()方法,最终得到的字符串是"System.Byte[]",完全没有保存任何图片字节的信息,这自然没法在receiver里还原出原始数组。

要实现无损的字节数组↔字符串转换,最可靠的方式是使用Base64编码,它专门设计用来将二进制数据转换为可安全传输的ASCII字符串,并且完全可逆,不会丢失任何原始数据。

修正后的完整代码:

public static void sender(string message) { 
    string path = "path of file here"; 
    byte[] pictureArray = File.ReadAllBytes(path); 
    // 将字节数组转换为Base64字符串
    receiver(Convert.ToBase64String(pictureArray)); 
} 

public static void receiver(string message) { 
    // 将Base64字符串还原为原始字节数组
    byte[] bytesReceived = Convert.FromBase64String(message); 
    // 这里就可以使用还原后的bytesReceived了,比如写入文件:
    // File.WriteAllBytes("output.jpg", bytesReceived);
}

为什么Base64是正确选择?

  • Base64编码会把每3个字节的二进制数据转换为4个ASCII字符,所有字符都在可打印范围内,不会出现编码/解码错误。
  • 转换过程完全可逆,还原后的字节数组和原始数组完全一致,满足无损转换的要求。

为什么不直接用字符串编码(比如UTF-8)?

因为不是所有字节序列都对应有效的UTF-8字符,强行用Encoding.UTF8.GetString()转换会导致部分字节被替换为替换字符(�),还原时就无法得到原始数据了,所以这种方式不能保证无损。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 22:02:48