没有将字符串隐式转换为整数 base62 编码 rails
no implicit conversion of String into Integer base62 encode rails
uuid = Digest::SHA256.digest(SecureRandom.uuid)
id = Base62.encode(uuid)
没有将字符串隐式转换为整数
行=id = Base62.encode(uuid)
我认为您的代码无法正常工作。原因如下:
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"
Returns一个字符串。
如果您查看 base62-rb
gem 中的代码以及方法上方的注释,您可以看到它正在将字符串与整数进行比较,这是我在执行时遇到的错误尝试复制这个:
ArgumentError: comparison of String with 0 failed
这是来自 gem 的方法:
# 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
gem 的事实。那么,也许您可以给我们一些背景信息,让我们知道您尝试了什么?
for pass string to base62
uuid = SecureRandom.uuid.gsub("-", "").hex
@id = uuid.base62_encode
uuid = Digest::SHA256.digest(SecureRandom.uuid)
id = Base62.encode(uuid)
没有将字符串隐式转换为整数
行=id = Base62.encode(uuid)
我认为您的代码无法正常工作。原因如下:
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"
Returns一个字符串。
如果您查看 base62-rb
gem 中的代码以及方法上方的注释,您可以看到它正在将字符串与整数进行比较,这是我在执行时遇到的错误尝试复制这个:
ArgumentError: comparison of String with 0 failed
这是来自 gem 的方法:
# 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
gem 的事实。那么,也许您可以给我们一些背景信息,让我们知道您尝试了什么?
for pass string to base62
uuid = SecureRandom.uuid.gsub("-", "").hex
@id = uuid.base62_encode