2017-04-13 15 views
-2
uuid = Digest::SHA256.digest(SecureRandom.uuid) 
id = Base62.encode(uuid) 

整数に文字列のいない暗黙の型変換に文字列のいない暗黙の型変換整数base62エンコードレール

ライン= id = Base62.encode(uuid)

+0

ようこそbase62するため。 "[ask]"と "[mcve]"をリンク先のページとともにお読みください。あなたの質問は明確ではありません。 –

+0

あなたの質問は何ですか? – sawa

+0

質問していただきありがとうございます、ここに書かれているはずの人がもっと気になります。私はbase62にUUIDを渡したいが、すでに感謝を解決した –

答えて

0

パス文字列がスタックオーバーフローに

uuid = SecureRandom.uuid.gsub("-", "").hex 
@id = uuid.base62_encode 
0

私はあなたのコードが動作するように起こっているとは思いません。理由は次のとおりです。

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宝石を使用しているという事実を前提とはもちろんです。だから、おそらくあなたは私たちにいくつかの文脈を与え、あなたが試したことを私たちに知らせることができますか?

+1

あなたはコメントと答えを混ぜている。質問が不明な場合は、質問を投票して投票を終了し、質問に問題がある理由を説明してください。 https://meta.stackoverflow.com/questions/256328/vote-to-close-unclear-questions-immediately-after-commentingおよびhttps://meta.stackoverflow.com/questions/260263/how-long-should-私たちはポスターの終わりを明かす前に質問を明記してこれを説明します。 –