我正在使用C#語言爲一個項目。我需要爲用戶提供大的(9+數字)號碼,他們將不得不重新進入另一個系統(爲了以後的數據關聯)。讓用戶輸入一個很大(手工)沒有錯誤的號碼幾乎是不可能的。algorithm-shorten +10 digits string
我一直在想出一個解決方案,用base64縮短這個數字,但是我找到的所有代碼都會創建一個字符和數字的字符串組合。有一個簡單的數學算法,我可以用它來製作一個更小的數字嗎?結果應該是數字而不是字母數字。
我正在使用C#語言爲一個項目。我需要爲用戶提供大的(9+數字)號碼,他們將不得不重新進入另一個系統(爲了以後的數據關聯)。讓用戶輸入一個很大(手工)沒有錯誤的號碼幾乎是不可能的。algorithm-shorten +10 digits string
我一直在想出一個解決方案,用base64縮短這個數字,但是我找到的所有代碼都會創建一個字符和數字的字符串組合。有一個簡單的數學算法,我可以用它來製作一個更小的數字嗎?結果應該是數字而不是字母數字。
你用一種錯誤的方式解決問題,而不是改變數字大小,只是爲用戶複製過去的號碼建立一個便捷的方法,一個簡單的按鍵事件,將數字複製到緩衝區,然後用戶將不必寫下數字。
hi.un可惜它不可能科學數字印在圖像上,這些圖像用於在社交網絡上宣傳我們公司的產品 –
爲什麼不把它作爲QR碼發佈呢? – Martheen
僅使用數字減少數字將無法使用。
你真正需要的是某種形式的錯誤檢查。 一個效果非常好的Verhoeff算法可以檢測幾乎所有的錯字。網上有很多例子可以找到。
喜歡: https://www.codeproject.com/articles/15939/verhoeff-check-digit-in-c
這些數字是由客戶通過他們的手機寫成的消息。我們不想強迫他們輸入複雜的文字 –
不,Verhoeff算法只會增加一位數,但會檢測最常見的錯誤。試試吧,感到驚訝。 – Frank
可以使用的哈希算法,哈希你大一些,但你需要處理哈希衝突。 其中一個很容易實現的是校驗sum16: https://en.wikipedia.org/wiki/List_of_hash_functions
見sum16你只能擁有0-65536。想想sum18?
如何將[0-9]編碼爲[0-9]並使用更少的位置進行編碼?查看破折號進行分組並添加校驗和號碼。 – CodeCaster
是的,你可以。它被稱爲uuencode/uudecode。它用於unix操作系統中的tar包裝(zip)。由於ASCII爲8位,數字爲4位,因此可以將數字打包爲8位以減少字符數。 uuenocode僅將字符打包爲可打印字符,因此不使用ASCII碼控制字符,並且不使用128至255以上的字符。由於uuencode在電子郵件標準中使用,因此它在庫中System.Web.Mail.MailEncoding.UUEncode – jdweng
@jdweng _「結果應該是**數字**而非字母數字」_ – CodeCaster