C#中byte[]与string的转换

本文介绍了在C#中如何实现byte数组与字符串之间的相互转换,包括使用UnicodeEncoding和Base64编码两种方法。此外,还详细解释了Unicode编码的不同格式(UTF-8、UTF-16和UTF-32)及其在不同字节顺序下的表现。

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

C#中byte[]与string的转换
 
1、
        System.Text.UnicodeEncoding converter = new System.Text.UnicodeEncoding();
        byte[] inputBytes =converter.GetBytes(inputString);
        string  inputString = converter.GetString(inputBytes);
2、
        string inputString = System.Convert.ToBase64String(inputBytes);
        byte[] inputBytes = System.Convert.FromBase64String(inputString);
 

编码是一个将一组 Unicode 字符转换为一个字节序列的过程。解码是一个反向操作过程,即将一个编码字节序列转换为一组 Unicode 字符。

Unicode 标准为所有支持脚本中的每个字符分配一个码位(一个数字)。Unicode 转换格式 (UTF) 是一种码位编码方式。Unicode 标准 3.2 版使用下列 UTF:

UTF-8,它将每个码位表示为一个由 1 至 4 个字节组成的序列。

UTF-16,它将每个码位表示为一个由 1 至 2 个 16 位整数组成的序列。

UTF-32,它将每个码位表示为一个 32 位整数。

GetByteCount 方法确定将有多少字节对 Unicode 字符集进行编码,而 GetBytes 方法执行实际的编码。

同样,GetCharCount 方法确定将有多少字符对字节序列进行解码,而 GetChars 和 GetString 方法执行实际的解码。

编码器可以使用 Big-Endian 字节顺序(从最高有效字节开始),也可以使用 Little-Endian 字节顺序(从最低有效字节开始)。例如,大写拉丁字母 A(码位为 U+0041)的序列化结果(十六进制)如下所示:

Big-Endian 字节顺序:00 41

Little-Endian 字节顺序:41 00

或者,UnicodeEncoding 提供一个前导码(即一个字节数组),可以将它作为编码过程中所产生的字节序列的前缀。如果前导码中包含字节顺序标记(码位为 U+FEFF),则它会帮助解码器确定字节顺序和转换格式或 UTF。Unicode 字节顺序标记的序列化结果(十六进制)如下所示:

Big-Endian 字节顺序:FE FF

Little-Endian 字节顺序:FF FE

通常,使用本机字节顺序存储 Unicode 字符的效率更高。例如,在 Little-Endian 平台(如 Intel 计算机)上最好使用 Little-Endian 字节顺序。

GetPreamble 方法返回一个包含字节顺序标记的字节数组。如果将此字节数组作为编码流的前缀,将有助于解码器识别所用的编码格式。

有关 Unicode 编码、字节顺序和字节顺序标记的更多信息,请参见 www.unicode.org 上的“The Unicode Standard”(Unicode 标准)部分。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值