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

정수로 문자열의 암시 적 변환에 문자열의 암시 적 변환정수 base62 인코딩 레일

라인 = id = Base62.encode(uuid)

+0

에 오신 것을 환영합니다 base62하기 위해. 링크 된 페이지와 함께 "[ask]"및 "[mcve]"를 읽으십시오. 귀하의 질문은 명확하지 않습니다. –

+0

무엇이 당신의 질문입니까? – sawa

+0

물어봐 줘서 고마워, 사람들이 여기 쓰는대로 더 신경 써, 질문 이상! 나는 uuid를 base62로 전달하려고하지만, 이미 감사 (Thankns)를 풀어 놓았다 –

답변

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- 우리는 잠깐 포스터를 써서 닫히기 전에 질문을 명확히하기 위해 이것을 설명합니다. –