许多应用程序都会有邀请新用户并自己获得奖励的机制。通过userid为每个用户生成一个唯一的邀请码。通过这个邀请码进来的用户,可以给自己带来奖励。原理是将十进制转换成更大的。最原始的邀请码可以使用自己的userid。自己的userid,很多userid都是十进制的,可能太长了2.生成邀请码最方便的方法是十进制转十六进制(或者其他base_convert)base_convert(string$number,int$frombase,int$tobase)$number原始数据$frombase原始数据十六进制格式(2~36之间)$tobase转16进制格式(2~36之间)//0-9a-z(代表10-35)base_convert(102023,10,10);//102023(十进制)base_convert(102023,10,16);//18e87(十六进制)base_convert(102023,10,36);//26pz(36系统)三.base_convert原理//一个10转16进制函数的简单实现functionmy_base_convert($int,$from=10,$to=16){$bases=['0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'];//代表0-15$toValue='';$尚=$int;do{$yu=$shang%16;$尚=楼层($尚/16);$toValue=$bases[$yu].$toValue;}while($尚>0);return$toValue;}base_convert(102023,10,16);//18e87(十六进制)my_base_convert(102023,10,16);//18e87(十六进制)4.有替代方案吗?base_convert基方法是有序的,很容易被反向解析成userid。有我吗我们自己实现了一个类似的base_convert,但是乱序了?functionmy_base_convert($int,$from=10,$to=16){$bases=['a','b','0','1','2','3','4','7','8','9','c','d','e','f','5','6'];//代表0-15$toValue='';$尚=$int;do{$yu=$shang%16;$尚=楼层($尚/16);$toValue=$bases[$yu]。$toValue;}while($尚>0);return$toValue;}my_base_convert(102023,10,16);//b8587(无序十六进制)五。更大的无序基数转换只需要放$基数就可以放大感谢观看,欢迎关注我的公众号
