C#编程 10进制和26进制互转

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#编程 10进制和26进制互转相关的知识,希望对你有一定的参考价值。

参考技术A //字符和数字互转的函数,例如下面的转换。
//WorkWtoN("A"),WorkWtoN("Z"),WorkWtoN("BB")
//WorkNtoW (1), WorkNtoW (26), WorkNtoW (54);
public string WorkNtoW(int iNumber) //数字转字符

if (iNumber < 1 || iNumber > 702)

return "";

string sLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int iUnits = 26;

int iDivisor = (int)(iNumber / iUnits);
int iResidue = iNumber % iUnits;

if (iDivisor == 1 && iResidue == 0)

iDivisor = 0;
iResidue = iResidue + iUnits;

else

if (iResidue == 0)

iDivisor -= 1;
iResidue += iUnits;


if (iDivisor == 0)

return sLetters.Substring(iResidue - 1, 1);

else

return sLetters.Substring(iDivisor - 1, 1) + sLetters.Substring(iResidue - 1, 1);


public int WorkWtoN(string sString) //字符转数字

if (string.Compare(sString, "A") == -1 || string.Compare(sString, "ZZ") == 1)

return 0;

string sLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int iUnits = 26;
int sFirst = -1;
int sSecond = 0;
if (sString.Length == 1)

sSecond = sLetters.IndexOf(sString);

else

sFirst = sLetters.IndexOf(sString.Substring(0, 1));
sSecond = sLetters.IndexOf(sString.Substring(1, 1));

return (sFirst + 1) * iUnits + (sSecond + 1);
本回答被提问者采纳

《C#编程》课件 - C#基础

声明多维数组
• 创建一个多维数组
int[,] intMatrix;
float[,] floatMatrix;
string[,,] strCube;

使用new关键字
• 必须指定每个维度的大小
int[,] intMatrix = new int[3, 4];
float[,] floatMatrix = new float[8, 2];
string[,,] stringCube = new string[5, 5, 5];

Jagged Array交错数组
• 交错数组有点像多维数组
• 但是每个维度有不同的大小
• 交错数组是数组的数组
• 每个数组有不同长度

如何创建交错数组
int[][] jagged = new int[3][];
jagged[0] = new int[3];
jagged[1] = new int[2];
jagged[2] = new int[5];

生成01的函数Gen01,通过该函数体会递归:

static void Gen01(int index, int[] vector)
{
    if (index == -1)
        Print(vector);
    else
    for (int i=0; i<=1; i++)
    {
    vector[index] = i;
    Gen01(index-1, vector);
    }    
}
Gen01

 

扩展方法(具体见MSDNhttps://msdn.microsoft.com/zh-cn/library/bb383977.aspx

最常见的扩展方法是 LINQ 标准查询运算符。

在代码中,可以使用实例方法语法调用该扩展方法。 但是,编译器生成的中间语言 (IL) 会将代码转换为对静态方法的调用。 因此,并未真正违反封装原则。 实际上,扩展方法无法访问它们所扩展的类型中的私有变量。

anonymous type匿名类型

// 使用匿名类型表达一辆车

var myCar = new { Color = "银色", Brand = "大众", Speed = 180 }; //使用var声明一个匿名类型

Console.WriteLine("我的车是{0}-{1}。 ",
myCar.Color, myCar. Brand);

匿名类型是引用类型,直接派生自 System.Object
已经重写了Equals(), GetHashCode()和
ToString()的版本
• 不要有==和!=运算符重载 (直接使用上面说的Equals())

可访问级别
• C#中的访问修饰符
• public-访问不受限制
• private-访问仅限于包含类型
• protected-访问仅限于包含类型或从包含类型派 
生的类型
• internal-访问仅限于当前程序集
• protected internal-访问限制到当前程序集或
从包含派生的类型的类别

继承:重要方面

结构体不能被继承
• C#中没有多继承
• 只有多接口可以被实现
• 实例和静态构造函数不能被继承
• 继承是传递关系
• 如果C从B派生,而B从A派生,那么C同样从A派生
• 一个派生类扩展它的基类
• 能够添加新成员,但不能删除派生成员
• 以相同内容或签名声明的新成员隐藏了所继承成员
• 一个类能够声明virtual虚拟方法和属性
• 派生类能够override重写这些方法的实现
• 如: Object.Equals()是虚方法


虚方法
• virtual method虚方法是用于基类实例和派生类有
相同方式,但其实现不同的方法
• 当声明为virtual时,方法称为虚方法
public virtual void CalculateSurface() 
• 基类中声明为虚的方法,能够在派生类中使用
override关键字重写

防御式编程原则
防御式编程意味着:防御式编程意味着:对任何公开方法,检查它的输入数据,前置条件和后置条件
期望不正确的输入,将其正确处理
• 不仅仅思考正常的执行流,也考虑不寻常的情况
确保不正确的输入结果出现异常,而不是不正确输出

一次性资源
• 小心处理一次性资源
• 所有实现了IDisposable的类应当遵守tryfinally / using模式:

StreamReader reader =new StreamReader("file.txt");
try
{
    String line =reader.ReadLine();
}
finally
{
    reader.Close();
}

StreamReader reader =new StreamReader("file.txt");
using (reader)
{
    String line =reader.ReadLine();
}

 

自文档代码
最好的文档是代码自己;
制作自我解释和自文档代码,易于阅读和理解;
不要对坏代码写文档,重写它!
好代码不需要读注释,它是自我解释的

 

自动洗牌程序

class Card
{
    public string Face { get; set; }
    public Suit Suit { get; set; }
    public override string ToString()
    {
        string card ="(" + this.Face + " " + this.Suit +")";
        return card;
    }
}

enum Suit{Club, Diamond, Heart, Spade};

static void Main()
{
    Card card = new Card() { Face="A", Suit=Suit.Club };
    Console.WriteLine(card);
}   

从上面的代码体会ToString函数的重写,以及它是怎样被隐式调用的。

string output = point.Name + ":" + point; 
object都会实现ToString方法
当他和string 执行 + 号操作时 ,编辑器自动执行将obj转换成string类型
如string output = point;出错,string output = point + "";//正确,会自动转为string

上面这段也可以体会ToString的隐式调用。

 

以上是关于C#编程 10进制和26进制互转的主要内容,如果未能解决你的问题,请参考以下文章

进制之间互转

进制转换

C# 字节数组各进制字符串数据互转

js数值进制互转

任意类型和二进制互转工具类

二进制/十六进制转浮点数的编程(互转类似)