什么是压缩文件名的好方法?
What is a good way to compress filenames?
假设我有一个描述性文件名,其中包含一些约定的命名约定,例如:
typ_blue_sz_00215416_st_00001_end_00138_p1_ht_p2_w_p3_wt_ts_20160707130232.h5
在这个(虚构的)例子中,文件是一个HDF5数据文件,文件名由下划线和关键字组合分隔。这里的关键字是 typ
for "type," sz
for "size," st
for "start," end
, p1
- p3
for "parameter 1 through 3," and ts
stands for "timestamp." 以这种方式命名文件有利于编程解析和人类可读性......但是随着人们希望传达的元数据量增加,文件名接近 OS 限制(在 Windows 的情况下为 256)。
我们需要一种方法来大幅缩短这些文件名。我们都同意我们不想依赖于从文件中读取此元数据......我们希望它在文件名中。不过,只要易于编程的解析仍然存在,我们愿意在人类可读性方面做出妥协。
一个解决方案是实现某种代码和映射...这样我们就可以用更少的字符传送相同数量的数据,前提是您有解码器。有更好的方法吗?这个问题有某种标准的解决方案吗?想到的一件事是 TinyURL,它似乎使用相同的概念进行操作。
以二进制形式对信息进行编码,然后使用 Base64 或类似方式将其转换为允许的文件名字符。
假设你有 3 位的颜色,27 位的大小,17 位的开始,17 位的结束,三个参数中的每一个 8 位(只是在我进行时弥补),和 32 位的时间戳。总共 120 位。使用 Base64,可以将其编码为 20 个字符。结果看起来像:
rSitpmY9RX1kq6N73ML1.h5
假设我有一个描述性文件名,其中包含一些约定的命名约定,例如:
typ_blue_sz_00215416_st_00001_end_00138_p1_ht_p2_w_p3_wt_ts_20160707130232.h5
在这个(虚构的)例子中,文件是一个HDF5数据文件,文件名由下划线和关键字组合分隔。这里的关键字是 typ
for "type," sz
for "size," st
for "start," end
, p1
- p3
for "parameter 1 through 3," and ts
stands for "timestamp." 以这种方式命名文件有利于编程解析和人类可读性......但是随着人们希望传达的元数据量增加,文件名接近 OS 限制(在 Windows 的情况下为 256)。
我们需要一种方法来大幅缩短这些文件名。我们都同意我们不想依赖于从文件中读取此元数据......我们希望它在文件名中。不过,只要易于编程的解析仍然存在,我们愿意在人类可读性方面做出妥协。
一个解决方案是实现某种代码和映射...这样我们就可以用更少的字符传送相同数量的数据,前提是您有解码器。有更好的方法吗?这个问题有某种标准的解决方案吗?想到的一件事是 TinyURL,它似乎使用相同的概念进行操作。
以二进制形式对信息进行编码,然后使用 Base64 或类似方式将其转换为允许的文件名字符。
假设你有 3 位的颜色,27 位的大小,17 位的开始,17 位的结束,三个参数中的每一个 8 位(只是在我进行时弥补),和 32 位的时间戳。总共 120 位。使用 Base64,可以将其编码为 20 个字符。结果看起来像:
rSitpmY9RX1kq6N73ML1.h5