[英]Generate serial number using letters and digits
我正在開發一個用於在C#和DevExpress中接受訂單的應用程序,並且需要一個生成唯一訂單號的函數。 訂單號必須包含字母和數字,且長度為20 ..我已經看到了Guid.NewGuid()之類的東西,但我不希望它是完全隨機的,也不希望是一個自動遞增的數字..
有人可以幫忙嗎? 即使它是另一種語言的腳本,我也急切需要想法:)
您可以創建自己的類型。 假設yyyyMMddWWW-YYY-XXXXXXX,其中WWW是商店編號,YYY收銀員ID XXXXXXX是十六進制數字(->也許是您將其變為十六進制的實際自動遞增數字)。 這只是一個想法。 恐怕您必須根據系統的要素來決定它的狀態。
編輯:同樣,如果您可以對其應用校驗數字算法,也將有助於避免錯誤
兩種不同的方法:
就像Oded建議的一樣,Guid不是隨機的(嗯,如果您有網卡,則不是)。 它基於時間和位置坐標。 有關詳細說明,請參見Raymond Chens博客文章 。
最好為訂單ID使用自動遞增的int。 我不明白您為什么不想使用它或使Guid失敗?
除了自動ID來保持唯一性並代表系統中不同訂單的順序外,我想不出其他任何方法。
我想到一個想法。
將DateTime.Now.Ticks轉換為十六進制字符串。
瞧, String.Format("{0:X}", value);
如果不夠長,您說您需要20位數字,則始終可以填充零。
結果:鏈接到當前客戶端PC的序列號:)
我的兩分錢。
如果您需要創意,請查看Luhn和Luhn mod N算法。
盡管這些算法不是唯一的代碼生成器,但它們可能會為您提供一些有關如何生成可以驗證的代碼的想法(這樣,您就可以在將代碼發送到數據庫之前驗證代碼的正確性)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.