0
我正在製作一個URL縮短器,並且我正在努力將編號(id)編碼爲字符串的最佳方式。多基轉換 - 使用URL縮短器的所有組合
我使用字符0-9,A-Z,a-z,所以它基本上是一個基本的62編碼。這是非常基本的,但它沒有使用所有可能的代碼。它會產生的代碼將是:
0, 1, ... y, z, 10, 11, ... zy, zz, 100, 101, ...
注意,00到0Z未使用的代碼,同樣爲000至0zz,等等。我想用所有的代碼,如下所示:
0, 1, ... y, z, 00, 01, ... zy, zz, 000, 001, ...
這將是基62和基地63的組合,與根據位置不同的基礎...使用基62是容易的,例如:
create procedure tiny_GetCode
@UrlId int
as
set nocount on
declare @Code varchar(10)
set @Code = ''
while (@UrlId > 0 or len(@Code) = 0) begin
set @Code = substring('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz', @UrlId % 62 + 1, 1) + @Code
set @UrlId = @UrlId/62
end
select @Code
但我還沒有設法做出一個多基地轉換出來,利用所有的代碼。
你所有的基地都屬於我們。 – 2010-04-29 21:07:51
@Byron:你是什麼意思? 0將是'0',10將是'A',35將是'Z',61將是'z',62將是'00',63將是'01'等等。 – Guffa 2010-04-29 21:21:01
你是對的我誤解了這個問題。 – 2010-04-29 21:51:05