有没有人为Guid to Base34编码器/解码器提供了一个很好的代码片段,我以前搜索过它并且从未真正找到任何好的来源。
答案 0 :(得分:2)
这个Number base conversion class in C#可以相当容易地扩展到base34(或者如果你认为人们会混淆S和5或b和6或i和j或B和8或9和g或其他什么的其他人)3 p>
答案 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)
此处的关键方法是ToByteArray和this particular constructor。
编码:
string encodedGuid = Convert.ToBase64String(guid.ToByteArray());
解码:
Guid guid = new Guid(Convert.FromBase64String(encodedGuid));