首页 | IT新闻 | 硬件 | 操作系统 | 开发 | 网络编程 | 数据库 | 热门框架 | 网络安全 | 组网 | 建站指南 | 网页制作 | 特效 | 实用技巧 | 服务器 | 办公 | QQ | 探索 | 社区
|
关于C#数据类型之间转换的问题
在装箱,拆箱过程中,首先涉及到的是数据的转换。发下午几个小时,研究了C#中数据类型之间的转换涉及的一些问题,希望大家给予意见!
1、数据类型的类名 这里讲的数据的类名指的是: Sytem.data.DbType对应的类型,我是这样理解的。 类名 System中相对应的类型 bool System.Boolean (布尔型,其值为 true 或者 false) char System.Char (字符型,占有两个字节,表示 1 个 Unicode 字符) byte System.Byte (字节型,占 1 字节,表示 8 位正整数,范围 0 ~ 255) sbyte System.SByte (带符号字节型,占 1 字节,表示 8 位整数,范围 -128 ~ 127) ushort System.UInt16 (无符号短整型,占 2 字节,表示 16 位正整数,范围 0 ~ 65,535) uint System.UInt32 (无符号整型,占 4 字节,表示 32 位正整数,范围 0 ~ 4,294,967,295) ulong System.UInt64 (无符号长整型,占 8 字节,表示 64 位正整数,范围 0 ~ 大约 10 的 20 次方) short System.Int16 (短整型,占 2 字节,表示 16 位整数,范围 -32,768 ~ 32,767) int System.Int32 (整型,占 4 字节,表示 32 位整数,范围 -2,147,483,648 到 2,147,483,647) long System.Int64 (长整型,占 8 字节,表示 64 位整数,范围大约 -(10 的 19) 次方到 10 的 19 次方) float System.Single (单精度浮点型,占 4 个字节) double System.Double (双精度浮点型,占 8 个字节) 代码如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace TypeTest { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { bool bo = true; byte b = 9; char c = ’a’; sbyte sb = 8; short s = 8; int i= 7; uint u = 6; long l = 5; this.textBox1.Text = "typetest"; this.textBox1.AppendText("bool -> " + bo.GetType().FullName + ""n"); this.textBox1.AppendText("byte -> " + b.GetType().FullName + ""n"); this.textBox1.AppendText("char -> " + c.GetType().FullName + ""n"); this.textBox1.AppendText("sbyte -> " + sb.GetType().FullName + ""n"); this.textBox1.AppendText("short -> " +s.GetType().FullName + ""n"); this.textBox1.AppendText("int -> " + i.GetType().FullName + ""n"); this.textBox1.AppendText("uint -> " +u.GetType().FullName + ""n"); this.textBox1.AppendText("long -> " +l.GetType().FullName + ""n"); //其实类型就不写上,自己可以真接加上去! } } } 结果可看到: typetestbool -> System.Boolean byte -> System.Byte char -> System.Char sbyte -> System.SByte short -> System.Int16 int -> System.Int32 uint -> System.UInt32 long -> System.Int64 // 说明,以后所编的代码都是写在private void Form1_Load(object sender, EventArgs e)中的 2、Value Type间的转换。 bool bo = true; byte b = 9; char c = ’a’; sbyte sb = 8; short s = 8; int i = 7; uint u = 6; long l = 5; this.textBox1.Text = "datatype"; this.textBox1.AppendText("bool bo=" + bo.ToString() + ""n"); this.textBox1.AppendText("byte b= " + b.ToString() + ""n"); this.textBox1.AppendText("char c= " + c.ToString() + ""n"); this.textBox1.AppendText("sbyte sb= " + sb.ToString() + ""n"); this.textBox1.AppendText("short s= " + s.ToString() + ""n"); this.textBox1.AppendText("int i= " + i.ToString() + ""n"); this.textBox1.AppendText("uint u=" + u.ToString() + ""n"); this.textBox1.AppendText("long l= " + l.ToString() + ""n"); 此段代码并没有转换数据类型,只说明它们的类型公别还是System.bool型…System.long型。 追加一行:int g = 1; short h = g; this.textBox1.AppendText("h = " + h.ToString() + ""n"); 结果编译报错: G:"Projects"Visual C#"Convert"Form1.cs(118): 无法将类型“int”隐式转换为“short” 数据要进行强制转换。 如上例修改如下: short g = 1; byte h = (byte) g; // 将 short 型的 g 的值强制转换成byte型后再赋给变量 h this.textBox1.AppendText("h = " + h.ToString() + ""n"); 就可以了! Short->byte short g = 265; //265 = 255 + 10 byte h = (byte) g; this.textBox1.AppendText("h = " + h.ToString() + ""n"); 注意:溢出问题! 3、ASCII<->Unicode char ch = ’a’; short ii = 65; this.textBox1.Text = ""; this.textBox1.AppendText("The ASCII code of "’" + ch + ""’ is: " + (short)ch + ""n"); this.textBox1.AppendText("ASCII is " + ii.ToString() + ", the char is: " + (char)ii + ""n"); char name1 = ’屈’; char name2 = ’志’; short name3 = 21195; this.textBox1.AppendText("The Unicode of "’" + name1 + ""’ is: " + (short)name1 + ""n"); this.textBox1.AppendText("The Unicode of "’" + name2 + ""’ is: " + (short)name2+ ""n"); this.textBox1.AppendText("Unicode is " + name3.ToString() + ", the name3 is: " + (char)name3 + ""n"); 它的运行结果是 The ASCII code of ’a’ is: 97 ASCII is 65, the char is: A The Unicode of ’屈’ is: 23624 The Unicode of ’志’ is: 24535 Unicode is 21195, the name3 is: 勋 4、int<->string float f = 12.3f; string str = "258"; this.textBox1.Text = ""; this.textBox1.AppendText("f = " + f.ToString() + ""n");//float->string if (int.Parse(str) == 258) //string->int { this.textBox1.AppendText("str convert to int successfully."); } else { this.textBox1.AppendText("str convert to int failed."); 5、String<->char[] string str = "quzhixun"; char[] chars = str.ToCharArray();//string->char[] this.textBox1.Text = ""; this.textBox1.AppendText("Length of ""quzhixun"" is " + str.Length + ""n"); this.textBox1.AppendText("Length of char array is " + chars.Length + ""n"); this.textBox1.AppendText("char[2] = " + chars[2] + ""n"); char[] name = { ’q’, ’u’, ’z’, ’h’, ’i’, ’x’, ’u’,’n’ }; string sname = new String(name);//char[]->string this.textBox1.AppendText("sname = """ + sname + """"n"); 6、tring<->byte[] string s = "hi,屈志勋"; byte[] b1 = System.Text.Encoding.Default.GetBytes(s);//sting->byte[],半个英文1个字节,汉字2 个字节。 byte[] b2 = System.Text.Encoding.Unicode.GetBytes(s); //sting->byte[],都是两个字节。 string t1 = "", t2 = ""; foreach (byte b in b1) { t1 += b.ToString("") + " "; } foreach (byte b in b2) { t2 += b.ToString("") + " "; } this.textBox1.Text = ""; this.textBox1.AppendText("b1.Length = " + b1.Length + ""n"); this.textBox1.AppendText(t1 + ""n"); this.textBox1.AppendText("b2.Length = " + b2.Length + ""n"); this.textBox1.AppendText(t2 + ""n"); // byte[] b = { 65, 66, 67 }; string s = System.Text.Encoding.ASCII.GetString(b);//byte[]->string this.textBox1.AppendText("The string is: " + s + ""n"); // 7、转换十六进制 int a = 159357; this.textBox1.Text = ""; this.textBox1.AppendText("a(10) = " + a.ToString() + ""n"); this.textBox1.AppendText("a(16) = " + a.ToString("x6") + ""n"); this.textBox1.AppendText("a(16) = " + a.ToString("X6") + ""n"); 8、DateTime<->long double doubleDate = DateTime.Now.ToOADate();//按原来的double值输出,DateTime->long DateTime theDate = DateTime.FromOADate(doubleDate);//从原来的的double值获得System.DateTime对象,long->DateTime this.textBox1.Text = ""; this.textBox1.AppendText("Double value of now: " + doubleDate.ToString() + ""n"); this.textBox1.AppendText("DateTime from double value: " + theDate.ToString() + ""n"); // 9、form DateTime DateTime now = DateTime.Now; string format; this.textBox1.Text = ""; format = """year"":yyyy,""month"":MM,""day"":dd HH:mm:ss"; this.textBox1.AppendText(format + ": " + now.ToString(format) + ""n"); format = "yy年M日d日"; this.textBox1.AppendText(format + ": " + now.ToString(format) + ""n"); 相关链接
频道热门
热门新闻
|
精粹集锦
特别推荐
频道精选
|