簡體   English   中英

如何生成唯一的12位數字?

[英]How to generate unique number of 12 digits?

我正在開發一個將原始數據發送到斑馬打印機並打印出條形碼的應用程序。 而且由於每個項目都有自己獨特的條形碼,因此我需要定義一個變量,該變量會自動生成唯一的12位數字。

參見示例:

printBar prnt = new printBar("123456789012");

無論如何,有沒有定義一個double變量並將其傳遞給一個函數,該函數返回唯一的12位數字並再次將其傳遞給printBar類? 但是如何確保每次訪問它都返回一個唯一值?

我還想到了另一種方法,因為正在使用MS Access db,所以我可以創建一列AutoNumber數據類型並將其分配給Random,但是您沒有獲得所需的確切12位數字,有時它會生成10位數字,有時還會更多或更少。

以十二位數字開頭,即:111111111111

要獲得新的“隨機”唯一編號,請使用之前的編號並加1。

盡管不是隨機的,但可以保證唯一性。

您每天,每小時,每分鍾會生成幾次新條形碼?

您可以使用諸如Visual Studio自動版本控制之類的技術。

  • 計算從某個特定日期(例如1.1.2000)開始的天數
    • 用0到5個地方填充。
  • 持續幾秒鍾直到午夜
    • 也用零到五個位置填充。
  • 在您的應用中,使用靜態計數器填充最后兩個數字,該計數器會在99左右結束。

public static class UniqueId
{
    static private int _InternalCounter = 0;

    static public string Get()
    {
        var now = DateTime.Now;

        var days = (int)(now - new DateTime(2000, 1, 1)).TotalDays;
        var seconds = (int)(now - DateTime.Today).TotalSeconds;

        var counter = _InternalCounter++ % 100;

        return days.ToString("00000") + seconds.ToString("00000") + counter.ToString("00");
    }

使用這種方法,您會在2273年10月15日滿溢,但是我認為這可以由您的追隨者解決。 ;-)

如果您需要每秒創建一百多個唯一ID,則可以將最后兩行更改為:

var counter = _InternalCounter++ % 1000;
return days.ToString("0000") + seconds.ToString("00000") + counter.ToString("000");

現在,您每秒將具有數千個唯一ID,但是日期將在2027年5月18日溢出。如果這太短,那么通過以下行將開始日期設置為2010,則可以再獲得十年的時間:

var days = (int)(now - new DateTime(2010, 1, 1)).TotalDays;

使用RNG和哈希可以:

10-輸出12位數字
20-檢查值是否在哈希中
30-如果是40,否則是10
40-將值推入哈希
50-返回新的12位數字
60-轉到10

您可以簡單地使用:

var temp = Guid.NewGuid().ToString().Replace("-", string.Empty);
var barcode = Regex.Replace(temp,"[a-zA-Z]", string.Empty).Substring(0, 12);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM