0
A
回答
2
您無法縮短UUID。
甲UUID是16個八位字節(128位)數。
以其規範形式,UUID由32個小寫十六進制數字表示。
如果你縮短了它,它不會再是UUID。
創建較短的URL有多種技術。只需搜索「網址縮寫器」即可找到任何數量的寶石。
6
正如另一個答案所指出的那樣,您無法獲得真實的UUID,但可以縮短它們的一部分。 UUID是128位整數,可用於32位十六進制數字。您可以輕鬆地存儲每個字符6位,並將長度降至22個字符,這就是base 64編碼的含義。標準的base 64編碼使用大寫和小寫字母,數字和「+」和「/」來完成它。如果你用「 - 」和「_」替換「+」和「/」,你最終會得到一個不需要url編碼的字符串。你可以像下面這樣做(用UUIDTools創建UUID):
uuid = UUIDTools::UUID.random_create
str = [uuid.raw].pack('m*').tr('+/','-_').slice(0..21)
爲了讓您的值回來了:
(str + "==\n").tr('-_','+/').unpack('m*').first if str =~ /^[a-zA-Z0-9_\-]{22}$/
這是假設的UUID可以被放入原始格式,其中它是一個16個8位字符串。這裏是展示一個真實的例子的IRB會議:
2.1.1 :016 > uuid=UUIDTools::UUID.random_create
=> #<UUID:0x83f1e98c UUID:20d07b6c-52af-4e53-afea-6b3ad0d0c627>
2.1.1 :017 > uuid.raw
=> " \xD0{lR\xAFNS\xAF\xEAk:\xD0\xD0\xC6'"
2.1.1 :018 > str = [uuid.raw].pack('m*').tr('+/','-_').slice(0..21)
=> "INB7bFKvTlOv6ms60NDGJw"
2.1.1 :019 > uuid2 = (str + "==\n").tr('-_','+/').unpack('m*').first
=> " \xD0{lR\xAFNS\xAF\xEAk:\xD0\xD0\xC6'"
2.1.1 :022 > UUIDTools::UUID.parse_raw(uuid2)
=> #<UUID:0x849e6b44 UUID:20d07b6c-52af-4e53-afea-6b3ad0d0c627>
我用,我通常使用的Postgres生成的UUID作爲表的主鍵,並通過他們的IDS各種網站這種方法。它不會節省很多空間,但它確實使一些URL適合一個80字符的行,其中標準格式的完整UUID不會。使用破折號,標準的UUID是36個字符,因此22是約2/3的大小。
0
我創建了一個基於邁克爾·查尼
def encode(uuid)
[uuid.tr('-', '').scan(/../).map(&:hex).pack('c*')].pack('m*').tr('+/', '-_').slice(0..21)
end
def decode(short_id)
(short_id.tr('-_', '+/') + '==').unpack('m0').first.unpack('H8H4H4H4H12').join('-')
end
uuid = "355bf501-ffea-4f5a-a9e2-16074de6fcf2"
=> "355bf501-ffea-4f5a-a9e2-16074de6fcf2"
encode(uuid)
=> "NVv1Af_qT1qp4hYHTeb88g"
decode(_)
=> "355bf501-ffea-4f5a-a9e2-16074de6fcf2
相關問題
- 1. 如何縮短url長度?
- 2. 如何找到鏈接到特定長URL的縮短網址?
- 3. WPF:將字符串縮短到特定長度
- 4. 如何根據textBox1.Length縮短字符串到特定長度c#
- 5. 如何縮短輸入的長度
- 6. 不能縮短NSString長度
- 7. 將標題縮短到一定的長度
- 8. 如何以某種方式縮短QString,當轉換爲UTF-8時,它比特定長度短?
- 9. Rails has_secure_token縮短字符長度
- 10. 在.net中縮短DataProtection加密長度?
- 11. 縮短文本區域的長度
- 12. Rails - 保存的uuid的長度短於32個字符
- 13. UUID最大字符長度
- 14. 如何縮短底邊的長度?在html/css
- 15. 如何縮短長名單的名稱
- 16. 如何縮短jsp中的長URL?
- 17. 如何縮短長if else語句
- 18. 加密字符串,縮短長度較短
- 19. jQuery的縮短長度(兆字節轉換到千兆字節)
- 20. 如何找到長度直到特定值以陣列在Java
- 21. 將短固定長度的字符串(52個字符)壓縮到小於40
- 22. 以縮短或延長等
- 23. 縮短「長」參數列表
- 24. Javascript - 縮短標題太長
- 25. 如何刪除短於python中特定長度的字典中的鍵?
- 26. 如何縮短ColSideColors在heatmap.2高度()
- 27. 如何縮短?
- 28. RegEX字符串到特定長度
- 29. 將列表內插到特定長度?
- 30. 驗證JSON數組到特定長度
謝謝兩位單行功能。數據庫中的URL縮短器會被識別出來嗎? – asaignment 2014-10-28 18:49:30
URL縮短的一種技術是將標識符與數據記錄一起存儲在數據庫中。您是否應該使用此方法取決於您擁有的數據記錄類型和/或您想要的URL類型。如果你正在尋找SEO(搜索引擎優化),你的網址應該包含有意義的文本,比如'example.com/path/to/my-shortened-url',你需要一種將縮短的URL標識符映射到數據記錄。 – 2014-10-28 19:22:50