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

C#将byte[]写入文件时输出为System.Byte[]如何存储实际字节内容

问题原因

将byte[]类型与字符串直接拼接时,会默认调用数组的ToString()方法,该方法仅返回类型名System.Byte[],不会输出实际的字节内容。

解决方案

根据你的存储需求选择对应实现方式:

1. 存储网页可读文本内容

如果请求的是网页这类文本类资源,直接将字节数组按对应编码转换为字符串即可,绝大多数网页使用UTF-8编码:

// 先在代码头部引用命名空间
using System.Text;

// 修改写入行的代码即可
using (StreamWriter writer = new StreamWriter("saveData.txt",true))
{
    string content = Encoding.UTF8.GetString((byte[])url[1]);
    writer.WriteLine(url[0] + " " + content);
}

2. 存储原始字节的十六进制文本形式

如果需要保留原始字节的信息用于后续还原,可以转成十六进制字符串存储:

using (StreamWriter writer = new StreamWriter("saveData.txt",true))
{
    // 输出为连续十六进制字符,如FF01AB格式
    string hexStr = BitConverter.ToString((byte[])url[1]).Replace("-", "");
    writer.WriteLine(url[0] + " " + hexStr);
}

现有代码优化建议

你当前的displayByteCode方法未释放网络请求、流等非托管资源,存在内存泄漏风险,优化后的代码参考:

public byte[] displayByteCode(string getURLCode)
{
    HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(getURLCode);
    myRequest.Method = "GET";
    // 所有实现IDisposable接口的对象都用using块自动释放资源
    using (WebResponse myResponse = myRequest.GetResponse())
    using (Stream responseStream = myResponse.GetResponseStream())
    using (MemoryStream ms = new MemoryStream())
    {
        responseStream.CopyTo(ms);
        return ms.ToArray();
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 12:36:05