将 DateTime 转换为尽可能短的版本号(对于 url)
挑战:将图像文件的“修改日期”DateTime
转换为适合保持 url 中唯一性的版本号/字符串,因此图像的每次修改都会生成唯一的 url、版本号/字符串尽可能短。
代码的简短程度仅次于数字/字符串的简短程度 如果这并不真正符合代码高尔夫状态,我们深表歉意:-)
要求
- C#、.Net Framework v4
- 输出必须是 url 中文件夹名称的有效字符。
- 日期时间精度可以降低到最接近的分钟。
编辑:这并不完全是理论/谜题,所以我想我宁愿把它留在这里,而不是代码高尔夫堆栈交换?
Challenge: convert a 'modified date' DateTime
of an image file to a version number / string suitable for maintaining uniqueness in a url, so each modification of the image generates a unique url, the version number/string to be as short as possible.
The shortness of code is secondary to the shortness of number/string
Apologies if this does not really qualify for code-golf status :-)
Requirements
- C#, .Net framework v4
- output must be valid characters for a folder-name in a url.
- DateTime precision can be reduced to nearest minute.
EDIT: this is not entirely theoretical / Puzzle, so I guess I'd rather keep it here than on code-golf stack exchange?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
使用
DateTime.Ticks
属性,然后将其转换为 36 进制数字。它会非常短并且可以在 URL 上使用。下面是一个用于与 Base 36 进行转换的类:
http://www.codeproject.com/ KB/cs/base36.aspx
您也可以使用 Base 62,但不能使用 Base64,因为 Base 64 中除数字和字母之外的额外数字之一是
+
,需要对其进行 url 编码,并且你说过你想避免这种情况。Use the
DateTime.Ticks
property and then convert it to a base 36 number. It'll be very short and usable on a URL.Here's a class for converting to/from Base 36:
http://www.codeproject.com/KB/cs/base36.aspx
You could also use base 62, but not base64 since one of the extra digits in base 64 beyond numbers and letters is
+
which needs to be url encoded and you said you wanted to avoid that.好的,结合答案和评论,我得出了以下内容。
注意:删除零填充字节以及与项目开始时的开始日期差异,以减少数字的大小。
Ok, combining answers and comments I've come up with the following.
Note: removal of zero padding bytes, and starting date difference from the start of the project to reduce the size of numbers.