我想写一个可逆的编码器和相应的解码器,这样任何字符串都可以被编码成一个合法的文件名,对应于Unix文件系统的文件命名规则。如何做到这一点?示例:“xyz.txt”是一个有效的文件名,而“xyz/.txt”不是。
问问题
214 次
1 回答
0
tl;博士:你的方法有缺陷。坚持文件系统的限制。它们很难优雅地克服(尤其是在没有引入你自己的,甚至更奇怪的限制的情况下)。
不可能制作出可严格解码的。您正在尝试将较大的域映射到较小的域,这意味着反向映射无法正确可逆。
这很容易用一个简单的例子来证明:你如何编码/
使它可以反转?“简单,”你可能会说,“我会用令牌替换x
。” 但是现在你怎么知道什么时候 anx
是实际的x
,什么时候 your是应该转换为x
的“特殊” ?你不能。x
/
您当然可以制作一个不太可能发生意外冲突的系统。例如,您可以将其更改/
为.-
---
哦,同样,对于它的价值,大多数 unix 文件系统实际上认为除/
空字符以外的任何字符都是有效字符(more)。显然,使用它是一件很痛苦的事情。
于 2013-01-30T09:57:55.143 回答