C#字节数组与字符串相互转换代码案例

本文详细介绍了C#中字节数组与字符串之间的转换方法,包括字节数组转字符串,字节数组转ASCII字符串,以及Unicode与BigEndianUnicode编码的字符串相互转换。同时,还涵盖了按照ASCII、UTF7、UTF8、Unicode、BigEndianUnicode和UTF32等编码将字符串转换为字节数组的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、字节数组转换为字符串

using System;
 
namespace BasicApp
{
    class Program
    {
        public static void Main(string[] args)
        {
            // 字节数组
            byte[] bData = {65,66,67,68};
            // 字符串
            string str  = BytesToString(bData);
            // 输出
            Console.WriteLine("转换后的字符串为: {0}",str); 
             
            string str2  = BytesToString(bData,"GBK");
            // 输出
            Console.WriteLine("转换后的字符串为: {0}",str2); 
            Console.ReadKey(true);
        }
         
        // 字节数组转换为字符串
        public static String BytesToString(byte[] bData)
        {
           return System.Text.Encoding.GetEncoding(0).GetString(bData);
        }
         
        // 字节数组转换为字符串
        public static String BytesToString(byte[] bData,string encode)
        {
           return System.Text.Encoding.GetEncoding(encode).GetString(bData);
        }
         
    }
}

字节数组转换为字符串的两种方法:System.Text.Encoding.GetEncoding(0).GetString(bytes)和System.Text.Encoding.GetEncoding("GBK").GetString(bytes)

二、字节数组转换为ASCII字符串

using System;
using System.Text;
 
namespace BasicApp
{
    class Program
    {
        public static void Main(string[] args)
        {
            // 字节数组
            byte[] ba = new byte[] { 119,104,97,116,50,49,46,99,111,109 };
            // 转换为ASCII的字符
            string s = Encoding.ASCII.GetString(ba);
            // 打印转换后的内容
               Console.WriteLine(s);
                
            Console.ReadKey(true);
        }
          
    }
}

C#字节数组转换为ASCII字符的方法:Encoding.ASCII.GetString(bytes);

三、字节数组与Unicode/BigEndianUnicode字符串相互转换

using System;
using System.Text;
 
namespace BasicApp
{
    class Program
    {
        public static void Main(string[] args)
        {
            string s = "IT小奋斗";
            // 将字符串转换为Unicode数组
            byte[] bytes = Encoding.BigEndianUnicode.GetBytes(s);
            foreach (byte b in bytes){
                Console.Write(b + ",");
            }
            Console.WriteLine();
             
            // 字节数组
            byte[] bytes1 = new byte[] { 73,0,84,0,15,92,75,89,151,101 };
            // 转换为 Unicode
            string str = Encoding.Unicode.GetString(bytes1);
            Console.WriteLine(str);
                
            // 字节数组
            byte[] bytes2 = new byte[] { 0,73,0,84,92,15,89,75,101,151 };
            // 转换为 BigEndianUnicode
            string str2 = Encoding.BigEndianUnicode.GetString(bytes2);
            Console.WriteLine(str2);
             
            Console.ReadKey(true);
        }
          
    }
}

Unicode编码和BigEndianUnicode编码都使是用2个字节对一个字符进行编码,不同点就是过储存字符的顺序正好相反,即前后颠倒。

四、按照编码(ASCII、UTF7、UTF8、Unicode、BigEndianUnicode和UTF32)将字符串转换为字节数组

using System;
using System.IO;
using System.Text;
 
namespace BasicApp
{
    class Program
    {
        public static void Main(string[] args)
        {
            string file = "c://what21.txt";
            using (StreamWriter output = new StreamWriter(file)) 
            {
                // 写出文件的字符串
                string srcString = "IT小奋斗";
     
                // 安装不同的编码转换为数组
                byte[] asciiString = Encoding.ASCII.GetBytes(srcString);
                byte[] utf7String = Encoding.UTF7.GetBytes(srcString);
                byte[] utf8String = Encoding.UTF8.GetBytes(srcString);
                byte[] unicodeString = Encoding.Unicode.GetBytes(srcString);
                byte[] beUnicodeString = Encoding.BigEndianUnicode.GetBytes(srcString);
                byte[] utf32String = Encoding.UTF32.GetBytes(srcString);
                 
                // 格式化输出编码数组 
                output.WriteLine("ASCII  Bytes: {0}", BitConverter.ToString(asciiString));
                output.WriteLine("UTF-7  Bytes: {0}", BitConverter.ToString(utf7String));
                output.WriteLine("UTF-8  Bytes: {0}", BitConverter.ToString(utf8String));
                output.WriteLine("Unicode  Bytes: {0}", BitConverter.ToString(unicodeString));
                output.WriteLine("BigEndianUnicode  Bytes: {0}", BitConverter.ToString(beUnicodeString));
                output.WriteLine("UTF32  Bytes: {0}", BitConverter.ToString(utf32String));
                 
                // Console输出
                Console.WriteLine(BitConverter.ToString(utf8String));
                Console.WriteLine(BitConverter.ToString(utf7String));
                Console.WriteLine(BitConverter.ToString(asciiString));
                Console.WriteLine(BitConverter.ToString(unicodeString));
                Console.WriteLine(BitConverter.ToString(beUnicodeString));
                Console.WriteLine(BitConverter.ToString(utf32String));
            }
            Console.ReadKey(true);
        }
          
    }
}

将一个字符串,按照编码ASCII、UTF7、UTF8、Unicode、BigEndianUnicode和UTF32分别转换成编码后的数组,经过BitConverter类格式化后,保存到文件并Console打印。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值