//2进制 0-1
//8进制 0-7 可以用 clng("&O71") 代替
//16进制 0-9 A-F 可以用 clng("&Hf1") 代替
//36进制 0-9 A-Z
//62进制 0-9 A-Z a-z
将2进制8进制16进制转换为10进制
value:需要转换的值
fromBaseL:转换值的格式,例:2进制,8进制
toBase:需转换的格式,例:10进制
public string ConvertString(string value, int fromBase, int toBase)
{
int intValue = Convert.ToInt32(value, fromBase);
return Convert.ToString(intValue, toBase);
}
36进制转10进制
public static decimal Str2Decimal(string value)
{
string keys = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";//编码,可加一些字符也可以实现72,96等任意进制转换,但是有符号数据不直观,会影响阅读。
int exponent = keys.Length;//幂数
decimal result = 0;
for (int i = 0; i < value.Length; i++)
{
int x = value.Length - i - 1;
result += keys.IndexOf(value[i]) *Pow(exponent, x);// Math.Pow(exponent, x);
}
return result;
}
一个数据的N次方
private static decimal Pow(decimal baseNo, decimal x)
{
decimal value = 1;1 will be the result for any number's power 0.任何数的0次方,结果都等于1
while (x > 0)
{
value = value * baseNo;
x--;
}
return value;
}
字符串16进制转换成数字
Convert.ToInt64("0x" + “要转换的值”, 16);
数字16进制转换成字符串
String.Format("{0:X}", “要转换的值”);