1.字符转码。。。。。。
Char int String byte 他们的相互转换
文本格式txt。。。。。都是字符型
我们在编程的时候,不管是用C#语言或者是用java语言都难免会遇到数据类型间的转换,数据类型的转换经常会涉及到数据在内存里的存放,所以有的时候很让人头痛。通过查阅资料和我个人的理解,在这类把数据类型的转换总结了一下。
由于我是从事C#的,我就以C#中byte,int,char,string和bit为例。
bit:位,二进制0或1表示1位(1bit)
byte:字节,1字节有8位 1byte=8bit
int:C#中的整数类型,占用4个字节32位(int32)
char:c#中的字符类型,占16位字符,也就是2个字节
String:C#中的字符串类型,相当于字符数组(char数组)
可以通过toArrayChar()方法转成char数组
要注意的是:经常有同志说:字母占1个字节,汉字占2个字节,
是的,在计算机上却是这样的,关于为什么,就不说了,是关于编码,有是一段很长得历史。
说到这里菜菜们就迷糊了:那char ch=’a’,ch=’啊’,那到底占用多少了?
其实我们a占1字节,汉字占2字节是说在计算机中文本占得空间,跟我们C#中的char没么关系,只要是char类型就占用两个字节。
说了这么多,终于离正题近了
在C#中byte char int 是属于值类型,
String是引用类型
byte是一个字节,范围是再{(-255)到255}之间
byte与char的转换在内存中存得数据本质是一样的,只是对照ASCII
码中另一种表现形式。
例:byte b=97 char ch=(char)b;
console.WriteLine(ch);
在控制台打印显示的时a,因为97在ASCII码中十进制对应的自符就是a
Int与char的相互转换同byte也是对照ASCII码中转换的,只不过,当int的值大于127时,就会事一些特殊字符,或者乱码,
Int,char,byte 与String是值类型与应用类型的转换,就那int转String为例。
先要说明下:
值类型值是在内存线程栈中,
应用类型式是再内存托管椎中,而栈中是存得它存放值的地址。
Int 类型能隐式转换成String类型,但是想把String类型转换int类型时不能强转
像String str=”123”;
int num=(int)str;
此种写法是错误的。因为String是引用类型,它的值是放在托管堆中而线程栈中存放的时它堆中存放值的地址。