字节和字符,字符编码
★字节:字节(byte)是计算机信息技术用于计量存储容量和传输容量的一种计量单位,1个字节等于8位(Bit)二进制。(0~255或者0x00~0xFF)。在ASCII码中,一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。对于符号来说,英文标点占一个字节,中文标点占两个字节。举例:英文句号“.”占1个字节的大小,中文句号“。”占2个字节的大小
★字符(char):是指计算机中使用的字母、数字、字和符号,包括:1、2、3、A、B、C、~!•#¥%……—*()——+等等,相当于这些东西的统称。所以,1个汉字字符会占用两个英文字符的位置,存储需要2个字节;1个英文字符存储只占一个英文字符的位置,存储需要1个字节;2个数字为一个字节。
传输的过程中 5A 就代表一个字节
一个简体中文汉字,是一个字符,占2数字转unicode编码个字节。(编码方式:gb2312,代码页:936)
例如:
一个门禁控制器的序列号S/N为40000,40000转化为十六进制是9C 40,一般我们写成【低位在前,高位在后】,即409C。
C#代码中:
char a=’杨’;//这个“杨”,是一个字符,gb2312编码为2个字节。
★关于char类型说明如下:
Char类型的范围在0x0000~0xFFFF(0~65535)之间,可隐式转化为int,ushort,long,ulong,decimal,double等类型,如下代码正确:
int a=’a’;//等价于int a=97;//a的Ascii码是97
if(‘1’==49){Console.WriteLine(“1的ASCII码是49”);}
int x=Convert.ToInt32(‘杨’);//x是一个整数
char类型字符在0~127之间和ASCII码表一致。
简体中文字符主要在20000~40000之间。
★C#代码如下:(使用System.Text命名空间)
int x = 'a';
Console.WriteLine(x);
x = '杨';
Console.WriteLine(x);
string s = "杨-abc";
//字符串s使用Unicode编码(统一的字符编码标准,采用双字节对字符进行编码)
byte[] bufferUnicode = Encoding.Unicode.GetBytes(s);
Console.WriteLine("使用Unicode编码字符串s:");
foreach (byte buffer in bufferUnicode)
{
Console.WriteLine(buffer);
}
Console.WriteLine();
//字符串s使用gb2312(简体中文)编码(中文编码成两个字节,数字和字母编码成一个字节)
byte[] bufferGb2312 = Encoding.GetEncoding("gb2312").GetBytes(s);
Console.WriteLine("使用gb2312编码字符串s:");
foreach (byte buffer in bufferGb2312)
{
Console.WriteLine(buffer);
}
Console.WriteLine();
//字符串s使用ASCII(美国信息交换标准码)编码(都编码为一个字节)
byte[] bufferAscii = Encoding.ASCII.GetBytes(s);
Console.WriteLine("使用ASCII编码字符串s:");
foreach (byte buffer in bufferAscii)
{
Console.WriteLine(buffer);
}
Console.WriteLine();
★运行效果如下图:
★注:
数字0的ASCII码是48,连字符-的ASCII码是45,字母a的ASCII码是97
汉字“杨”用Unicode编码是104 103(两个字节)
汉字“杨”用gb2312编码是209 238(两个字节)
汉字“杨”用ASCII编码是63 (一个字节)
数字“1”用Unicode编码是49 0 (两个字节)
数字“1”用gb2312编码是49 (一个字节)
数字“1”用ASCII编码是49(一个字节)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论