C# 2进制、8进制、10进制、16进制...各种进制间的转换(一) convert 类中的方法
程序员文章站
2022-12-25 17:35:27
常见的进制方式,主要有二进制,八进制,十进制和十六进制,通用的转换方式是把非十进制的数据类型转换成十进制的,然后再转换成其他类型。 在.NET Framework中,System.Convert 类中提供了较为全面的各种类型、数值之间的转换功能。其中的两个方法可以轻松的实现各种进制的数值间的转换 一 ......
常见的进制方式,主要有二进制,八进制,十进制和十六进制,通用的转换方式是把非十进制的数据类型转换成十进制的,然后再转换成其他类型。
在.net framework中,system.convert 类中提供了较为全面的各种类型、数值之间的转换功能。其中的两个方法可以轻松的实现各种进制的数值间的转换
一 、convert 类中的转换方法
1、convert.toint32(string value, int frombase);
把不同进制数值的字符串转换为数字(十进制)
value 参数 要进行转换的数值字符串
frombase参数 要转换成的进制格式,只能是2、8、10及16。
convert.toint32(”100111101″, 2); //二进制数 100111101 转成十进制 convert.toint32(”76″, 8); //八进数 76 制转成十进制 convert.toint32(”ff”, 16); // 16进数 ff 制转换成十进制
2、convert.tostring(int value, int tobase);
可以把一个数字(十进制)转换为不同进制数值的字符串格式,
value 参数 要进行转换的数字(十进制数)
tobase参数 要转换成的进制格式,只能是2、8、10及16。
convert.tostring(69, 2); //十进制数 69 转二进制 convert.tostring(69, 8); //十进制数 69 转八进制 convert.tostring(69, 16);//十进制数 69 转十六进制
二 、一个各进制*转换的方法
进制转换的入口函数:
/// <summary> /// 进制转换 /// </summary> /// <param name="input"></param> /// <param name="fromtype">原来的进制格式</param> /// <param name="totype">要转换成的进制格式</param> /// <returns></returns> public string convertgenericbinary(string input, byte fromtype, byte totype) { string output = input; switch (fromtype) { case 2: output = convertgenericbinaryfrombinary(input,totype); break; case 8: output = convertgenericbinaryfromoctal(input,totype); break; case 10: output = convertgenericbinaryfromdecimal(input,totype); break ; case 16: output = convertgenericbinaryfromhexadecimal(input,totype); break; default: break; } return output; }
从二进制转换到其他格式:
/// <summary> /// 从二进制转换成其他进制 /// </summary> /// <param name="input"></param> /// <param name="totype"></param> /// <returns></returns> private string convertgenericbinaryfrombinary(string input, byte totype) { switch (totype) { case 8: //先转换成十进制然后转八进制 input = convert.tostring(convert.toint32(input, 2), 8); break; case 10: input = convert.toint32(input, 2).tostring(); break; case 16: input = convert.tostring(convert.toint32(input, 2), 16); break; default: break; } return input; }
从八进制转换成其他格式:
/// <summary> /// 从八进制转换成其他进制 /// </summary> /// <param name="input"></param> /// <param name="totype"></param> /// <returns></returns> private string convertgenericbinaryfromoctal(string input, byte totype) { switch (totype) { case 2: input = convert.tostring(convert.toint32(input, 8), 2); break; case 10: input = convert.toint32(input, 8).tostring(); break; case 16: input = convert.tostring(convert.toint32(input, 8), 16); break; default: break; } return input; }
从十进制转换到其他格式:
/// <summary> /// 从十进制转换成其他进制 /// </summary> /// <param name="input"></param> /// <param name="totype"></param> /// <returns></returns> private string convertgenericbinaryfromdecimal(string input, int totype) { string output = ""; int intinput = convert.toint32(input); switch (totype) { case 2: output = convert.tostring(intinput, 2); break; case 8: output = convert.tostring(intinput, 8); break; case 16: output = convert.tostring(intinput, 16); break; default: output = input; break; } return output; }
从十六进制转换到其他格式:
/// <summary> /// 从十六进制转换成其他进制 /// </summary> /// <param name="input"></param> /// <param name="totype"></param> /// <returns></returns> private string convertgenericbinaryfromhexadecimal(string input, int totype) { switch (totype) { case 2: input = convert.tostring(convert.toint32(input, 16), 2); break; case 8: input = convert.tostring(convert.toint32(input, 16), 8); break; case 10: input = convert.toint32(input, 16).tostring(); break; default: break; } return input; }
三、各进制数的运算
把各进制数转换成 十进制数进行计算,然后再转换成原类型。
举例一个二进制之间的加法:
/// <summary> /// 二进制之间的加法 /// </summary> /// <param name="x"></param> /// <param name="y"></param> /// <returns></returns> public string addbetweenbinary(string x, string y) { int intsum = convert.toint32(x, 2) + convert.toint32(y, 2); return convert.tostring(intsum,2) ; }
推荐阅读
-
C# 2进制、8进制、10进制、16进制...各种进制间的转换(二)搜集的各种转换及方法
-
C# 2进制、8进制、10进制、16进制...各种进制间的转换(一) convert 类中的方法
-
C# 2进制、8进制、10进制、16进制...各种进制间的转换(三) 数值运算和位运算
-
C# 2进制、8进制、10进制、16进制...各种进制间的转换(一) convert 类中的方法
-
C# 2进制、8进制、10进制、16进制...各种进制间的转换(二)搜集的各种转换及方法
-
C# 2进制、8进制、10进制、16进制...各种进制间的转换(三) 数值运算和位运算
-
各种进制间的转换(2进制,8进制,10进制,16进制)
-
[C#] 2, 8, 10, 16 进制数之间的相互转换