我是靠谱客的博主 欣慰大侠,最近开发中收集的这篇文章主要介绍Unity编码解析以及常用转换,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目前计算机中用得最广泛的字符集及其编码 : ASCII,unicode,utf8,gb2312,gbk等

详细介绍就篇幅太大了,本篇文章只是简单介绍以及常用转换

1.ASCII


 C#中string与ASCII byte数组转换:
//string转byte数组
string str1 = "a";
byte[] array = System.Text.Encoding.ASCII.GetBytes(str1);
//byte数组转string
string s=System.Text.Encoding.ASCII.GetString(array);//这里的array就是存放ASCII的byte数组

char与ASCII转换:

//char转ASCII
int asc = (int)'a';
//ASCII转char
char ASCIIstr1 = Convert.ToChar(asc);

2.unicode

Unicode是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。目前的Unicode字符分为17组编排,0x0000 至 0x10FFFF,每组称为平面(Plane),而每平面拥有65536个码位,共1114112个。

string与byte数组转化:

//string转Unicode byte数组
string str = "aaa";
byte[] byt =  System.Text.Encoding.Unicode.GetBytes(str);
//Unicode byte数组转string
str = System.Text.Encoding.Unicode.GetString(byt);

3.utf-8

UTF-8用1到6个字节编码Unicode字符。UTF-8编码可以通过屏蔽位和移位操作快速读写。常见的UTF格式有:UTF-7, UTF-7.5, UTF-8,UTF-16, 以及 UTF-32

UTF-8编码规则:如果只有一个字节则其最高二进制位为0;如果是多字节,其第一个字节从最高位开始,连续的二进制位值为1的个数决定了其编码的字节数,其余各字节均以10开头。

string与byte数组转化:

//string转utf-8 byte数组
string str = "aaa";
byte[] byt = System.Text.Encoding.UTF8.GetBytes(str);
//utf-8 byte数组转string
str = System.Text.Encoding.UTF8.GetString(byt);

4.gb2312

GB2312编码适用于汉字处理、汉字通信等系统之间的信息交换,通行于中国大陆;新加坡等地也采用此编码。中国大陆几乎所有的中文系统和国际化的软件都支持GB 2312。

UTF-8编码与gb2312之间转化(中间有byte数组与string转化):

/// <summary>
/// GB2312转换成UTF8
/// </summary>
/// <param name="text"></param>
/// <returns></returns>
public static string gb2312_utf8(string text)
{
    //声明字符集   
    System.Text.Encoding utf8, gb2312;
    //gb2312   
    gb2312 = System.Text.Encoding.GetEncoding("gb2312");
    //utf8   
    utf8 = System.Text.Encoding.GetEncoding("utf-8");
    byte[] gb;
    gb = gb2312.GetBytes(text);
    gb = System.Text.Encoding.Convert(gb2312, utf8, gb);
    //返回转换后的字符   
    return utf8.GetString(gb);
}

/// <summary>
/// UTF8转换成GB2312
/// </summary>
/// <param name="text"></param>
/// <returns></returns>
public static string utf8_gb2312(string text)
{
    //声明字符集   
    System.Text.Encoding utf8, gb2312;
    //utf8   
    utf8 = System.Text.Encoding.GetEncoding("utf-8");
    //gb2312   
    gb2312 = System.Text.Encoding.GetEncoding("gb2312");
    byte[] utf;
    utf = utf8.GetBytes(text);
    utf = System.Text.Encoding.Convert(utf8, gb2312, utf);
    //返回转换后的字符   
    return gb2312.GetString(utf);
}

5.GBK

GBK是采用单双字节变长编码,英文使用单字节编码,完全兼容ASCII字符编码,中文部分采用双字节编码。

string与byte数组转化:

//string转GBK byte数组
string str = "aa";
System.Text.Encoding gbk = System.Text.Encoding.GetEncoding("GBK");
byte[] byt = gbk.GetBytes(str);
//GBK byte数组转string
str = gbk.GetString(byt);

补充:

十进制与十六进制相互转换:

 //十进制转十六进制
string hex = "";
int dec = 125;
if(x > 255)
     hex = dec.ToString("X4");
else
     hex = dec.ToString("X2");
//十六进制转十进制
dec = int.Parse(hex, System.Globalization.NumberStyles.AllowHexSpecifier);

最后

以上就是欣慰大侠为你收集整理的Unity编码解析以及常用转换的全部内容,希望文章能够帮你解决Unity编码解析以及常用转换所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部