我得到一個可能的大數字(UInt.MaxValue:18446744073709551615)作爲正常的base10數字。 這個數字最終將成爲一個文件名:12345678945768.txt將UInt64表示爲字符串的最短途徑
由於在Windows的文件名不侷限於只是個數字,我想在「壓縮」這一個較短的字符串,但需要確保該字符串可以被映射回一個數字。
對於較小的數字:0001365555,hexed比其他任何東西都短。 到目前爲止我發現的一切都表明Base64會最短,但事實並非如此。
到目前爲止,我已經試過這樣:
//18446744073709551615 - 20
UInt64 i = UInt64.MaxValue; // 0001365555
//"//////////8=" - 12
string encoded = Convert.ToBase64String(BitConverter.GetBytes(i));
//"FFFFFFFFFFFFFFFF" - 16
string hexed = i.ToString("X");
//"MTg0NDY3NDQwNzM3MDk1NTE2MTU=" - 28
string utf = Convert.ToBase64String(System.Text.Encoding.ASCII.GetBytes(i.ToString()));
有沒有更好的方式來「壓縮」整數類似轉換爲十六進制,但使用00-ZZ,而不僅僅是00-FF?
在此先感謝!
可能有些愚蠢的問題,但_why_你需要「壓縮」這些名字嗎? – Oded
這種壓縮的目的是什麼?你希望保存什麼? – Eilon
文件路徑進入數據庫字段。這個領域是有限的,隨着數字的增長,他們可能無法適應該領域。更改數據庫架構不是一個選項。 – Leon