2016-12-04 70 views
2

我正在使用C#語言爲一個項目。我需要爲用戶提供大的(9+數字)號碼,他們將不得不重新進入另一個系統(爲了以後的數據關聯)。讓用戶輸入一個很大(手工)沒有錯誤的號碼幾乎是不可能的。algorithm-shorten +10 digits string

我一直在想出一個解決方案,用base64縮短這個數字,但是我找到的所有代碼都會創建一個字符和數字的字符串組合。有一個簡單的數學算法,我可以用它來製作一個更小的數字嗎?結果應該是數字而不是字母數字。

+7

如何將[0-9]編碼爲[0-9]並使用更少的位置進行編碼?查看破折號進行分組並添加校驗和號碼。 – CodeCaster

+0

是的,你可以。它被稱爲uuencode/uudecode。它用於unix操作系統中的tar包裝(zip)。由於ASCII爲8位,數字爲4位,因此可以將數字打包爲8位以減少字符數。 uuenocode僅將字符打包爲可打印字符,因此不使用ASCII碼控制字符,並且不使用128至255以上的字符。由於uuencode在電子郵件標準中使用,因此它在庫中System.Web.Mail.MailEncoding.UUEncode – jdweng

+0

@jdweng _「結果應該是**數字**而非字母數字」_ – CodeCaster

回答

0

你用一種錯誤的方式解決問題,而不是改變數字大小,只是爲用戶複製過去的號碼建立一個便捷的方法,一個簡單的按鍵事件,將數字複製到緩衝區,然後用戶將不必寫下數字。

+0

hi.un可惜它不可能科學數字印在圖像上,這些圖像用於在社交網絡上宣傳我們公司的產品 –

+0

爲什麼不把它作爲QR碼發佈呢? – Martheen

0

僅使用數字減少數字將無法使用。

你真正需要的是某種形式的錯誤檢查。 一個效果非常好的Verhoeff算法可以檢測幾乎所有的錯字。網上有很多例子可以找到。

喜歡: https://www.codeproject.com/articles/15939/verhoeff-check-digit-in-c

+0

這些數字是由客戶通過他們的手機寫成的消息。我們不想強迫他們輸入複雜的文字 –

+0

不,Verhoeff算法只會增加一位數,但會檢測最常見的錯誤。試試吧,感到驚訝。 – Frank

相關問題