我用来应付,但是他们不是特别好的阅读、写作和沟通。所以我想来编码。我可以用base64,或base32,但他们将不容易,无论如何:base64有大写字母和符号。Base32是一个好一点的,但是你仍然可以获得笨拙的东西。

我想知道如果那里有一个很好的和清洁的方式来进行编码,数到可口的音素,因此实现更好的可读性,并希望有点压缩。

有帮助吗?

解决方案

气泡潺潺是一个很好的一个尝试。它产生像无意义但可读的输出:

xesef-disof-gytuf-katof-movif-baxux

其他提示

我希望你不要用这样的观念:自动化诅咒发生器:)

为什么不使用类似于PGP确实创造可读钥匙的东西,只需找到有特色的话一个很好的列表,可以说你正在使用128位的UUID的,256个字(2 ^ 8)一个列表意味着16词语的

愚蠢的问题,但为什么人们读/写UUID的/ etc。相对于应用程序?

如果你想要的是一个沟通方式hex值的可读性(即通过电话,或者当指导人口头上是什么类型),那么我建议你使用各种拼音的字母,比如 北约拼音字母我们军/海军字母拼音.

在后者中,字母A-F说的"能","贝克","查理","狗"、"轻","福克斯",别这样你就读的进制序列"3fd2cc0e",作为"三个狐狗两个查理查理零容易"。痕将会被读出完全同样的方式。

S / KEY 使用的2048个字的字典到64位数字映射到的6 预定字/音节序列。 (人们总是会找到发誓,如果他们正在寻找他们的话;))

气泡咿和base32是低效的,特别是在你的情况。我建议你让你自己的算法。由于有20个辅音和元音6(包括“Y”),你可以拥有约。 20 * 6 * 2 + 6×6 = 276辅音/元音 - 元音/辅音对。所以,你的电话号码的每个字节可以用一对来表示。随着一些调整你的算法可能会产生拼读单词不是泡沫潺潺短得多。你甚至可以发挥骰子和一个辅音/元音替换所有的奇数位数字。例如,0123456789ABCDEF(十六进制)编码到ABECIDOFUGYHKRM。 3141592654(分解)编码到HHIA-ROIR。你留下了可与元音配对,以取代一些双辅音10个备用辅音等。

  
    

和希望一个比特压缩的

  

不知道到底你的意思存在;使得一些“可读”或“pronouncable”将不可避免地扩大它所需的空间。也许你的意思是“希望有点冗余”?如果,即使用户做一个小小的失误这将是良好的,系统可以检测,甚至纠正。

实际上它取决于你的UUID有多大非常多,他们是如何经常沟通。如果他们需要传达通过电话或VoIP,你想要更多的可听冗余。如果他们需要进入到带数字键盘的移动设备,它往往是难以输入字母字符,moreso如果他们是区分大小写的。如果它们都写下来了很多,你需要担心的是看起来相似的字符(O和0和O,例如)。如果他们需要被记忆,那么可能是真正的单词串是最好的(看看在 PGP字列表)。

不过,我认为一个伟大的全方位的解决方案是只使用数字小数字。他们是一个困难得多相互混淆比一些字母字符(口语时都和书面)。易于在移动设备上输入,而人们都差不太多的记忆数字。

和字符串的长度也不错。让我们比较基数为10(十进制)base32。十进制字符串的长度是对应的base32字符串的长度log_10(32)倍或约1.5倍长。 base32的十个字符对应于15张十进制数。

没有太大的处罚,IMO,看到在基座32可以很容易地混淆C和T,或S,F和X(说话时),并且某人与外国口音是更容易引起麻烦。

如果他们易于阅读,他们可能就不会是特别独特。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top