.NET怎么将字节数组(byte[])和字符串相互转换

来源:网络学院作者:小团团头衔:草根站长
导读:本期聚焦于小伙伴创作的《.NET怎么将字节数组(byte[])和字符串相互转换》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《.NET怎么将字节数组(byte[])和字符串相互转换》有用,将其分享出去将是对创作者最好的鼓励。

在.NET开发中,字节数组和字符串的相互转换是非常基础且常用的操作,不同的编码方式会直接影响转换的结果,错误的编码选择可能导致乱码或者数据丢失。实际开发中需要根据具体场景选择合适的编码类来完成转换操作。

.NET怎么将字节数组(byte[])和字符串相互转换

使用Encoding类完成基础转换

.NET中内置的System.Text.Encoding类提供了所有编码转换的核心方法,其中GetBytes方法可以将字符串转换为字节数组,GetString方法可以将字节数组转换为字符串。需要注意的是,转换时使用的编码必须保持一致,否则会出现乱码。

字符串转字节数组

调用Encoding对应编码实例的GetBytes方法,传入需要转换的字符串即可,下面是常用编码的转换示例:

using System;
using System.Text;

class Program
{
    static void Main()
    {
        string testStr = "测试字符串123";
        // UTF8编码转换
        byte[] utf8Bytes = Encoding.UTF8.GetBytes(testStr);
        Console.WriteLine($"UTF8字节数组长度: {utf8Bytes.Length}");
        // GBK编码转换,需要添加System.Text.Encoding.CodePages包并注册
        Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
        byte[] gbkBytes = Encoding.GetEncoding("GBK").GetBytes(testStr);
        Console.WriteLine($"GBK字节数组长度: {gbkBytes.Length}");
        // Unicode编码转换
        byte[] unicodeBytes = Encoding.Unicode.GetBytes(testStr);
        Console.WriteLine($"Unicode字节数组长度: {unicodeBytes.Length}");
    }
}

字节数组转字符串

使用相同编码实例的GetString方法,传入字节数组即可完成转换,转换时如果字节数组不完整或者编码不匹配,会抛出异常或者得到乱码结果:

using System;
using System.Text;

class Program
{
    static void Main()
    {
        string testStr = "测试字符串123";
        // 先转成UTF8字节数组
        byte[] utf8Bytes = Encoding.UTF8.GetBytes(testStr);
        // 用相同编码转回字符串
        string result = Encoding.UTF8.GetString(utf8Bytes);
        Console.WriteLine($"转换结果: {result}");
        // 错误示例:用GBK解码UTF8字节数组,会出现乱码
        Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
        string wrongResult = Encoding.GetEncoding("GBK").GetString(utf8Bytes);
        Console.WriteLine($"错误编码转换结果: {wrongResult}");
    }
}

不同编码的转换差异

不同的编码方式对字符的存储规则不同,转换得到的字节数组长度也会有差异,下面是几种常用编码的特性对比:

编码类型英文存储中文存储适用场景
UTF81字节3字节网络传输、跨平台数据交换
Unicode2字节2字节Windows系统内部字符串处理
GBK1字节2字节国内老系统、本地文件存储

特殊场景的转换注意事项

  • 如果字节数组包含无效的编码序列,GetString方法可能会抛出异常,可以使用Decoder类的GetChars方法自定义异常处理逻辑。
  • 转换Base64编码的字符串时,需要先使用Convert.FromBase64String将字符串转为字节数组,再使用对应编码转为普通字符串;反向操作则先转字节数组,再用Convert.ToBase64String转为Base64字符串。
  • 处理文件流或者网络流时,需要明确流的编码格式,避免默认编码和流编码不一致导致转换错误。

常见问题解答

转换后出现乱码怎么办

首先检查转换时使用的编码是否和原始数据的编码一致,比如原始字符串是GBK编码生成的字节数组,转换时必须用GBK编码的GetString方法,否则就会出现乱码。如果不确定原始编码,可以尝试常见编码逐个测试,或者查看数据的元数据说明。

字节数组转字符串时提示数组越界

这种情况通常是字节数组不完整,比如网络传输时只接收了部分数据就调用转换方法,需要等待所有数据接收完成后再进行转换,或者对不完整的字节数组做截断处理,避免转换时访问越界。

byte[]字符串转换EncodingGetBytesGetString修改时间:2026-06-29 02:45:28

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。