36進位條碼序號產生器 [更新]

來源:互聯網
上載者:User
此演算法我在網上有搜尋,暫時感覺我自己的演算法最符合要求

最近一個案子涉及到條碼列印.要求是唯一的序列.中間有一個日期,最後3位為流水號.但列印的張數會超過999;
因此必須用到26個大寫字母,現在要求如下.999以前就是普通數字(001~999),再多就開始在百位使用字母即999的後一個數字為A00此時十位和個位還不能使用字母(平時列印會少於3600張,為了客戶看起來方便),
只有在百位將Z用完後才允許在十位使用字母,十位用完才允許個位使用字母

用36進位的話3位可以表示36*36*36=46656個數字

注意事項:
1)不能重複
2)數字個數應達到46656個
3)效率不能太低
4)請在本地測試沒有重複序號

因為家裡的電腦沒有安裝Visual Studio,所以格式就.private readonly char[] Char26{}=new char{A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z};
private readonly char[] Char36{}=new char{0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z};

public string ConvertNum(int num)
{
if(num<0 || num>=46655)
{
 throw new Exception("輸入的數字超出範圍");
}
else if(num>=12959)
{
string value="";
 num-=12959;
char d=Char26[(int)(num/1296)];
num=num%1296;
char t=Char36[num%36];
char h=Char36[(int)(num/36)];
return value+h+t+d;
}
else if(num>3599)
{
 string value="";
 num-=3599;
 char t=Char26[(int)(num/360)];
 num=num%1296;
 char h=Char36[num%36];
 int d=num%10;
 return value+h+t+d;
}
else if(num>=10)
{
 string value="";
 num-=3599;
 char h=Char36[(int)(num/100)];
 num=num%100;
 int t=(int)(num/10);
 int d=num%10;
 return value+h+t+d;
}
else
{
 return "00"+num;

}
 


}

由於在家沒有代碼,先給出測試的虛擬碼
//定義一個新list<string> nums
//i從0到46655迴圈
//輸入i擷取序號num
//nums中是否包含num
//不包含就將num添加到nums
//包含就輸出該重複序列
//迴圈完畢
//檢查nums中的num個數是否為46656

有網友提到什麼時候出現3字母.
我是在在Z99的後一個數字即為0A0,
而在0A9之後的一個數字為1A0
ZA9的後一個數字為0B0

ZZ9的後一個數字為00A

00Z的後一個數字為01A(請思考為什麼)

我編寫的演算法已經用到案子中去了,且經過測試可以獲得所有46656個數字.(代碼在下周五放出,呵呵)
期間為了加快運算速度,我使用了表驅動法,取得了較好的計算效率.
另外計劃寫個關於表驅動法的小文

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.