Guid到Base34编码器/解码器

时间:2010-01-06 14:27:23

标签: c# encoding guid

有没有人为Guid to Base34编码器/解码器提供了一个很好的代码片段,我以前搜索过它并且从未真正找到任何好的来源。

3 个答案:

答案 0 :(得分:2)

这个Number base conversion class in C#可以相当容易地扩展到base34(或者如果你认为人们会混淆S和5或b和6或i和j或B和8或9和g或其他什么的其他人)

答案 1 :(得分:1)

这是一个简化版本......它基本上需要一个字符串,计算MD5哈希,将前四个字节提取为无符号长(将字符串有效映射为4字节数),将其转换为base36然后交换“X”和“Y”的“哦”和“零”字符。然后,它确保最终字符串只有六个字符,如果需要填充“Z”字符。

require 'digest/md5'

# create an easy-to-read 6-digit unique idno
idno = original # starting string
idno = Digest::MD5.digest(idno).unpack("N").first # digest as unsigned long
idno = idno.to_s(36).upcase.tr("0O","XY") # convert to base34 (no "oh" or "zero")
idno = idno[0,6].ljust(6,"Z") # final 6-digit unique idno (pad with "Z" chars)

答案 2 :(得分:0)

此处的关键方法是ToByteArraythis particular constructor

编码:

string encodedGuid = Convert.ToBase64String(guid.ToByteArray());

解码:

Guid guid = new Guid(Convert.FromBase64String(encodedGuid));