回答

1

如果您不需要它太短,请使用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可能足够短,而且非常容易。

+0

感谢您的回答;这是一个很好的开始!经过进一步思考,我想编码的所有信息都可以用数字来表示。 ddmmyyhhss + rev,最多可以用7个字节编码的14位数字。这是最低的可能吗? – user1988953

+0

如果您只是想要ddmmyyhhmm + rev,并且假设您想支持30个不同的年份值并且转速高达50,000,则有31天* 12个月* 30年* 24小时* 60分钟* 50000转= 803520000000可能的值商店。您需要记录日志(803520000000)/ log(2)= 39.5位来存储它,这意味着如果您要使用位打包,则只需要5个字节。但是这需要一个相当复杂的实现,甚至不再使用字母数字字符:/使用日志(62)字母数字和bitpacking和最大rev 3300它可能只有6个字节... – andrewdotn

相关问题