日期:2014-05-18  浏览次数:20447 次

将当前时间转换成一个字符串(6个字符),大家给点意见
老板非要我这样生成一个6位的随机码,而且还要根据这个随机码能反得到时间

例如:07-08-06   12:30:55   789(毫秒)   生成******   不能是符号,可以是数字和字母的组合




------解决方案--------------------
既然能翻得到时间,那就不是随机码,知道随机什么意思吗?
反得到时间,精确度呢?
------解决方案--------------------
没有要求一定数字吧
可以这样做
1.计算时间刻度 就是tick (因为6位数字的缘故 可以考虑初始时间点迟一些)
2.把计算出来的十进制转为十六进制 或者更高的进制
------解决方案--------------------
大概想了一下,如果字母可以区分大小写的话,26×2=52,再加上10个数字,共有62个不同表示。时、分、秒为60进制,可以利用任一个表示一特定时间,还有两个剩余呢。日为30进制左右。月为12进制,年的话也可以表示好几十年了。
------解决方案--------------------
36进制...就为了做这个?是不是有点...-_#

其实可以自己构造算法分别对年月日时分秒做位移计算...以前做嵌入时用过这种思路...
------解决方案--------------------
CTime不是只占4个字节吗,前4个字节存成CTime类型
第五个字节用16进制表示毫秒,第六个字节是随机数。

或者转换成long型的,再把long型的压缩,比如转换成long型后为278987654,每三位取256的模,倍数加余数用两位表示,可以压缩为6个字符。