uuid = Digest::SHA256.digest(SecureRandom.uuid)
id = Base62.encode(uuid)
字符串的隱式轉換成整數字符串的隱式轉換成整數base62編碼軌
線= id = Base62.encode(uuid)
uuid = Digest::SHA256.digest(SecureRandom.uuid)
id = Base62.encode(uuid)
字符串的隱式轉換成整數字符串的隱式轉換成整數base62編碼軌
線= id = Base62.encode(uuid)
出於傳遞字符串base62
uuid = SecureRandom.uuid.gsub("-", "").hex
@id = uuid.base62_encode
我不認爲你的代碼是去工作。原因如下:
Base62.encode(num)
取一個base10數字並將其轉換爲base62字符串。這對你來說是個問題:
Digest::SHA256.digest(SecureRandom.uuid)
# => "\e\x1F\xD6yby\x02o\f)\xA2\x91\xD4\xFB\x85jd\xE0\xF7\xECtd\x8E\xA6\x9Ez\x99\xD8>\x04\nT"
返回一個字符串。
如果你看一下在base62-rb
寶石的代碼,上述方法的評論,你可以看到它比較字符串爲整數,這是我的錯誤,當我試圖複製這個:
ArgumentError: comparison of String with 0 failed
下面是從寶石的方法:
# From base62-rb.rb line 8-20:
# Encodes base10 (decimal) number to base62 string.
def self.encode(num)
return "0" if num == 0
return nil if num < 0
str = ""
while num > 0
# prepend base62 charaters
str = KEYS[num % BASE] + str
num = num/BASE
end
str
end
所有這一切當然是基於這樣的事實,你正在使用的base62-rb
寶石。所以,也許你可以給我們一些背景,讓我們知道你已經嘗試了什麼?
你正在混合評論和答案。如果你不確定這個問題,那麼最好的方法是投下問題並投票結束,然後在評論中解釋爲什麼問題有問題。 https://meta.stackoverflow.com/questions/256328/vote-to-close-unclear-questions-immediately-after-commenting and https://meta.stackoverflow.com/questions/260263/how-long-should-我們等待海報來澄清一個問題之前結束解釋這一點。 –
歡迎堆棧溢出。請閱讀「[問]」和「[mcve]」以及他們的鏈接頁面。你的問題不清楚。 –
你的問題是什麼? – sawa
感謝您的詢問,人們關心的更多,因爲它應該寫在這裏,不僅僅是問題!我想通過uuid base62,但是,已經解決Thankns –