C#中提供了一系列的函数来实现16进制和其他进制之间的转换,其中最常用的是Convert.ToString()函数。该函数可以将任意进制数字转换为16进制数字,也可以将16进制数字转换为其他进制数字。
下面是一个使用Convert.ToString()函数实现16进制和10进制之间转换的例子:
// 定义一个十进制整数 int num = 255; // 将十进制整数转换为十六进制字符串 string hexStr = Convert.ToString(num, 16); // 输出结果 Console.WriteLine("十六进制字符串:" + hexStr); // 输出:十六进制字符串:FF // 再将十六进制字符串转换回十进制整数 int decNum = Convert.ToInt32(hexStr, 16); // 输出结果 Console.WriteLine("十进制整数:" + decNum); // 输出:十进制整数:255
上面的代码中使用了Convert.ToString()函数将10进制整数255转换成了16位的FF。然后再使用Convert.ToInt32()函数将FF转换回10位的255。
此外,C#中也有一些特定的方法来实现16位和8位、2位之间的相互转化。例如可以使用BitConverter.GetBytes()方法将8位或2位的byte[]转化成16位的string。同样也可以使用BitConverter.ToInt32()方法将16位string解释成8位或2位byte[]。
对象引用可以是:
上传总是成功的;只有在对象正确键入时,向下转换才会成功。
向上转换操作从子类引用创建基类引用。
例如:
Product myProduct = new Product();
Item a = myProduct; // Upcast
Product
, DiscountProduct
, Item
都在上一节中定义。
在upcast之后,变量a仍然引用与变量myProduct相同的Product对象。
被引用的对象本身不被改变或转换:
Console.WriteLine (a == myProduct); // True
虽然a和myProduct引用相同的对象,但是对该对象有更严格的视图:
Console.WriteLine (a.Name); // OK
Console.WriteLine (a.InStoreCount); // Error: InStoreCount undefined
最后一行生成编译时错误,因为变量a的类型为Item,即使它引用了Product类型的对象。
要到达其InStoreCount字段,我们必须将该项目下转到产品。
向下转换操作从基类引用创建子类引用。
例如:
Product myProduct = new Product();
Item a = myProduct; // Upcast
Product s = (Product)a; // Downcast
Console.WriteLine (s.InStoreCount);
Console.WriteLine (s == a); // True
Console.WriteLine (s == myProduct); // True
与upcast一样,只有引用受影响,而不是底层对象。
向下转换需要显式转换,因为它可能在运行时失败:
DiscountProduct h = new DiscountProduct();
Item a = h; // Upcast always succeeds
Product s = (Product)a; // Downcast fails: a is not a Product
如果向下转换失败,则抛出 InvalidCastException
。
as
运算符执行一个求值为null的向下转换,而不是在向下转换失败时抛出异常:
Item a = new Item();
Product s = a as Product; // s is null; no exception thrown
当您要随后测试结果是否为null时,这很有用:
if (s != null) {
Console.WriteLine (s.InStoreCount);
}
C#抽象类抽象类是表示抽象概念的特殊类。例如,Integer是一个具体而Number是抽象的。形状是抽象的,而圆形是具体的。一个声明为...
C#继承的成员隐藏继承的成员基类和子类可以定义相同的成员。例如:public class A {public int Counter = 1; } public class B ...
C#GetType和typeofC#中的所有类型都在运行时由System.Type的实例表示。有两种基本方法来获取System.Type对象:在实例上调用Get...
C#ToString ToString 方法返回类型实例的默认文本表示。此方法被所有内置类型覆盖。例子这里有一个使用int类型的ToString方法的...
C#结构体struct类似于类。struct是一个值类型,而一个类是一个引用类型。 结构体不支持继承。结构体隐式地从对象派生,或者更确...