当前位置:编程学习 > C#/ASP.NET >>

请帮忙把一个VB的编号代码转为C#的

If Li >= 10000 Then
    BH = Left("CA000", 7 - Len(No(Li - 10000))) & No(Li - 10000)
Else
    BH = "C" & Format(Li, "00000")
End If
Function No(i) As String
    Dim Yushu As String
js:
    Yushu = i Mod 36
    If Yushu > 9 Then Yushu = Chr(Yushu - 9 + 64)
    No = Yushu & No
    i = Int(i / 36)
    If i > 0 Then GoTo js
End Function

效果是当Li这个数小于10000时,BH显示为C*****,C 后面跟5位数字
当超过10000时,显示效果为CA****后面顺序为:
CA0000A
CA0000B
...
CA0000Z
CA000A0
CA000A1
...
CA000A9
CA000AA
...
CA000AZ
CA000B0
...
CAZZZZZ --------------------编程问答-------------------- if (Li >= 10000)
    BH = "CA000".SubString(No(Li - 10000).Length - 2) + No(Li - 10000);
else
    BH = "C" + Li.ToString().PadLeft(5, '0');

string No(int i)
{
    string r = string.Empty;
    char Yushu = '\0';
    do {
        Yushu = (char)(i % 36);
        if ((int)Yushu > 9) Yushu = (char)((int)Yushu - 9 + 64);
        r = Yushu.ToString() + r;
        i /= 36;
    } while (i <= 0);
    return r;
} --------------------编程问答--------------------
引用 1 楼 caozhy 的回复:
if (Li >= 10000)
    BH = "CA000".SubString(No(Li - 10000).Length - 2) + No(Li - 10000);
else
    BH = "C" + Li.ToString().PadLeft(5, '0');

string No(int i)
{
    string r = string.Empty;
    char Yushu = '\0';
    do {
        Yushu = (char)(i % 36);
        if ((int)Yushu > 9) Yushu = (char)((int)Yushu - 9 + 64);
        r = Yushu.ToString() + r;
        i /= 36;
    } while (i <= 0);
    return r;
}
不对呀,在下面的过程进入了死循环 --------------------编程问答--------------------
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,