2010-11-24 51 views
0

在我的Web應用程序中,一個模型使用由某個UUID工具生成的標識符。由於我想將該標識符作爲URL的一部分,因此我正在調查縮短該UUID字符串的方法。因爲它目前是十六進制格式,所以我想以某種方式將它轉換爲ASCII。因爲它應該只包含普通字符和數字([\ d \ w] +),所以正常的十六進制到ASCII轉換似乎不起作用(醜陋的字符)。 你知道一些很好的算法或工具(Ruby)來做到這一點嗎?使UUID更短(十六進制到ASCII轉換)

+0

有趣的事實:base64編碼的uuid是22個字符長+兩個填充字符('==')。 uuid的標準十六進制表示是32個字符長+4'''字符。 – Seth 2010-11-24 00:59:35

回答

3

最後,UUID是一個128位的二進制數。如果將其表示爲16位未編碼字節,則無法避免「醜陋字符」。你可能想要做的是從十六進制解碼,然後使用base64進行編碼。請注意,base64編碼使用字符+/=以及A-Za-z0-9,您將需要做一些小後處理(我建議s/+/-/g; s/\//_/g; s/==$// - base64ed UUID將始終以兩個等號結尾)