1
我想将某些信息(如构建日期和时间以及SVN修订版)编码为可逆的字母数字字符串,以便我可以轻松识别构建维护已知构建表)。将时间,日期和数字编码为几个字母数字字符
我不知道如何去做这件事。你能指点我相关的算法,命令等,这将帮助我吗?
我想将某些信息(如构建日期和时间以及SVN修订版)编码为可逆的字母数字字符串,以便我可以轻松识别构建维护已知构建表)。将时间,日期和数字编码为几个字母数字字符
我不知道如何去做这件事。你能指点我相关的算法,命令等,这将帮助我吗?
如果您不需要它太短,请使用Base64 encoding。
$ echo $(date +%s)-r3749 | base64
MTM1ODg4MzA3MS1yMzc0OQo=
$ echo MTM1ODg4MzA3MS1yMzc0OQo= | base64 --decode
1358883071-r3749
这里我用了一个Epoch time因为它不是一个完整的日期字符少。由于它是一个数字,并且SVN修订版本也是一个数字,所以您也可以使用不同的基础对它们进行编码。使用this Base 62 encoding function,您可以将(日期,修订版)对1358883071-r3749
可逆地编码为1tXJyT,Yt
但Base64可能足够短,而且非常容易。
感谢您的回答;这是一个很好的开始!经过进一步思考,我想编码的所有信息都可以用数字来表示。 ddmmyyhhss + rev,最多可以用7个字节编码的14位数字。这是最低的可能吗? – user1988953
如果您只是想要ddmmyyhhmm + rev,并且假设您想支持30个不同的年份值并且转速高达50,000,则有31天* 12个月* 30年* 24小时* 60分钟* 50000转= 803520000000可能的值商店。您需要记录日志(803520000000)/ log(2)= 39.5位来存储它,这意味着如果您要使用位打包,则只需要5个字节。但是这需要一个相当复杂的实现,甚至不再使用字母数字字符:/使用日志(62)字母数字和bitpacking和最大rev 3300它可能只有6个字节... – andrewdotn