假设我有一个描述性文件名,其中有一些商定的命名约定,例如:
typ_blue_sz_00215416_st_00001_end_00138_p1_ht_p2_w_p3_wt_ts_20160707130232.h5
在此(组成)示例中,文件是HDF5数据文件,文件名由下划线和关键字组合分隔。此处的关键字为typ
代表“类型”,sz
代表“尺寸”,st
代表“开始”,end
,p1
- {{1} }表示“参数1到3”,p3
表示“时间戳”。以这种方式命名文件可以简化程序化解析和人类可读性......但随着希望传达的元数据量的增加,文件名接近操作系统限制(在Windows情况下为256)。
我们需要一种方法来大幅缩短这些文件名。我们都同意我们不想依赖于从文件中读取这些元数据......我们希望它在文件名中。但是,只要简单的程序解析仍然存在,我们愿意妥协人类的可读性。
一种解决方案是实现某种代码和映射......这样我们就可以用更少的字符传送相同数量的数据,前提是你有解码器。还有更好的方法吗?这个问题有某种标准的解决方案吗?想到的一件事是TinyURL,它似乎使用相同的概念。
答案 0 :(得分:1)
以二进制编码信息,使用Base64或类似的东西将其转换为允许的文件名字符。
假设您有3位用于颜色,27位用于大小,17位用于启动,17位用于结束,8位用于三个参数(只是随着时间的推移),以及32时间戳的位。这总共是120位。使用Base64,可以编码为20个字符。结果看起来像:
rSitpmY9RX1kq6N73ML1.h5