C# 数据类型转换
Convert类
参考:http://www.csref.cn/vs100/method/System-Convert-ToByte-18.html
Convert类能够将任意数据类型的值转换成任意数据类型:
数据类型 变量名 = convert.To数据类型(变量名);
int integer = Convert.ToInt32("123");
byte _byte = Convert.ToByte("50", 16); // 转换为十六进制,即0x50
方法 | 说明 |
---|---|
Convert.ToInt16() | 转换为整型(short) |
Convert.ToInt32() | 转换为整型(int) |
Convert.ToInt64() | 转换为整型(long) |
Convert.ToChar() | 转换为字符型(char) |
Convert.ToString() | 转换为字符串型(string) |
Convert.ToDateTime() | 转换为日期型(datetime) |
Convert.ToDouble() | 转换为双精度浮点型(double) |
Conert.ToSingle() | 转换为单精度浮点型(float) |
Convert.ToByte() | 转换为Byte类型(byte) |
BitConverter类
BitConverter类可以将数值型数据转换为字节数组,同样可以将字节数组转换为数值。
Parse方法
Parse 方法用于将字符串类型转换成任意类型:
数据类型 变量 = 数据类型.Parse(字符串类型的值);
int num1 = int.Parse("123");
ToString方法
C#的每一个类和结构都隐式继承自System.Object,而Object提供了ToString()虚方法,所以任何类的对象都有ToString()方法,该方法可以将对象转化为字符串类型。
第一种情况是数值类型,直接转换成字符串:
int a=100;
string str=a.ToString();
第二种是引用类型,输出当前对象所在命名空间及类名:
Person p= new Person();
Console.WriteLine(p); // 等价于Console.WriteLine(p.ToString());
输出:
Test.Person
ToString方法为虚方法,可以重写。所以通过重写ToString(),可以输出我们想要的内容。
public override string ToString()
{
return "Person: " + name + " " + Height;
}
字符数组和字符串互转
字符串转换为字符数组:
char[] tempChar = sourceString.ToCharArray();
字节数组转换为字符串:
string str = new string(tempChar);
Encoding类
Encoding类位于System.Text命名空间中,主要用于在不同的编码和Unicode之间进行转换。
利用Encoding类的Convert方法可将字节数组从一种编码转换为另一种编码。方法原型为:
Public static byte[] Convert(Encoding srcEncoding,Encoding dstEncoding,byte[]bytes)
各参数含义如下。
- srcEncoding:表示源编码格式。
- dstEncoding:表示目标编码格式。
- bytes:待转换的字节数组。
- 返回值为包含转换结果的Byte类型的数组。
利用Encoding类可以实现字符串与字节数组互相转换(一定要指定好编码格式,否则会导致乱码):
//用Ascii编码将xxxByteArray字节数组转化为字串ss
string ss = Encoding.ASCII.GetString(xxxByteArray);
//用系统默认编码将字串ss转换为字节数组test
byte[] test=Encoding.Default.GetBytes(ss);
List列表转字符串
List列表转数组用oArray()
;
数组转List列表用ToList()
;
List转字符串:
string s = string.Join(",", list.ToArray());
字符串转List:
string s = "1, 2, 3";
List<string> list = new List<string>(s.Split(new string[] { ", " }, StringSplitOptions.RemoveEmptyEntries));