【问题标题】:Clojure + Linux + Ext4 + Encoding a string into a filenameClojure + Linux + Ext4 + 将字符串编码为文件名
【发布时间】:2012-12-08 15:12:15
【问题描述】:

背景:

我在 Ubuntu Linux 12.10 上的 Java 7.0 上使用 Clojure,带有 Ext4 文件系统。

问题:

我有一个任意的 Clojure 字符串。我想把它编码成一个有效的文件名。

问题:

什么是最佳方式/什么是这样做的好内置?

注意:

编码的文件名不必是人类可读的。我只需要能够从文件名中恢复原始字符串。

编辑:

虽然如果有效名称的字符串被映射到人类可读的东西(并且接近它的原始值,那也很好。)

谢谢!

编辑:

encode:将任意字符串作为输入;创建有效的文件名作为输出

decode:从encode中获取文件名,恢复原始字符串

【问题讨论】:

  • 您的问题不完整...我们不知道“编码”在这种情况下是什么意思。
  • @RobertHarvey:谢谢。添加了一个编辑。现在清楚了吗?

标签: linux clojure


【解决方案1】:

如果不需要人类可读,只需 base64 编码即可。这将从字符串中删除任何文件名无效字符。

http://richhickey.github.com/clojure-contrib/base64-api.html

如果他们仍然没有原生 clojure 中的解码器,请使用 Java base64 解码函数。

【讨论】:

  • 那行不通,因为 base64 包含 '/',所以你会生成无效的文件名。您必须将“/”替换为 base64 字母表之外的另一个字符。
  • 那么你需要一个可以进行base62编码的Java函数,比如this one
  • 大声笑,我应该直接降到基数 16,并使用内置函数以十六进制表示数字吗? :-)
  • 您的意思是将字符串编码为每个字节两个十六进制数字?在大多数文件系统中,文件名中可以​​使用多少个字符是有限制的,这会使字符串的大小加倍,而 base62 应该只会稍微增加普通文本的大小。
猜你喜欢
  • 2010-09-20
  • 2021-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-10
  • 2016-04-05
  • 2011-04-20
相关资源
最近更新 更多