gpt4 book ai didi

algorithm - 是否有标准算法将 guid 编码为 base 107 或更大?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:28:11 32 4
gpt4 key购买 nike

我需要将 guid 转换为 19 个或更少的字符,这些字符可以转换回完全相同的 guid。

  • 该值将存储到数据库的文本字段中。
  • 字符不能是控制字符。
  • 字符不能是空格。
  • 字符必须是人类可以彼此区分的。
  • 字符应该是可打印的。
  • 首选 ISO 拉丁语 1 个字符,但不是必需的。

我能找到的最接近的编码实际上有正式的文档并且看起来像我需要的是 this base 85编码。它使用前 128 个字符 ASCII 集中的 85 个“安全”字符,并将任何 guid 带到 20 个字符,这是您在不使用扩展 ascii 范围的情况下可以获得的最佳字符。

话虽这么说;我需要知道是否存在正式编码,对于某些扩展 ASCII 集,它是 base 107 或更多,因为这是将任何 guid 放入 19 个字符所需的最少符号数。

(x19-1) ≥ (1632-1) :x 必须大于 107

注意:我可以很容易地得出自己的转换,但我想知道是否有可以解决该问题的标准化算法。

最佳答案

快速网络搜索没有找到任何有用的编码标准。即使有,您对字符易于人类区分的额外要求也可能很难满足。有很多字符,即使在标准集中,看起来相似或可能引起混淆,例如单引号和双引号、不同宽度的破折号,或许多不同的变音符号,如 ó、ò、ô、õ、ö 和 ø。

当以精心挑选的大字体显示时,这 140 个可能没有问题地被区分:

0 1 2 3 4 5 6 7 8 9
a b c d e f g h i j k l m n o p q r s t u v w x y z
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
! " # $ % & ( ) * + , - . / : ; < = > ? @ [ \ ] ^ { | } ~
€ ‡ ‰ • ™ ¢ £ ¤ ¥ § © ¬ ® ¯ ° ± ² ³ ¶ ¹ ¼ ½ ¾ ¿ ÷
Š Œ Ž š œ ž µ Æ Ç Ð Ñ æ ç ñ Ÿ Ã Ê Õ Û ÿ ã ê õ û

如果您必须删除可能导致技术问题的字符,例如当显示为 html 的一部分或输入到网络表单中时,将是:

" % & < > \

如果您想删除难以通过电话描述或令人困惑的字符,例如:

‡ ‰ ¤ ¬ ¯ µ ¶ ÷ Ð Œ Æ æ œ

如果您想删除某些(小)字体中可能难以识别或区分的字符,例如:

• ™ ® ³ ¹ ¼ ¾ Ç ç |

然后你也会遇到普通文本的问题,比如:

l versus I
O versus 0

因此,一组安全的最容易区分的字符可能是例如:

  1 2 3 4 5 6 7 8 9                                  (no zero)
a b c d e f g h i j k m n o p q r s t u v w x y z (no 'l')
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
! # $ ( ) * + , - . / : ; = ? @ [ ] ^ { } ~
€ ¢ £ ¥ § © ° ± ² µ ½ ¿
ã Ã ê Ê ñ Ñ õ Õ š Š û Û ÿ Ÿ ž Ž

本集仅剩110个字,如果觉得字小字不清楚,或太相近,或难以形容或内存,仍可删去一两个,但如你所愿看,实际上没有那么多选择。


我必须补充一点,识别字符可能与文化有关。我希望法国人很容易看出 é、è 和 ê 之间的区别,而对于说英语的人来说,这三者可能看起来都像是“顶部带有重音的 e”。这也是为什么我没有选择任何带有变音符号的“i”版本的原因;如果您不期待“i”的不同版本,因为您的语言不使用它们,那么很容易将变音符号与标准的点缀“i”混淆。


另请注意,“Latin-1”字符集有不同版本:原始 ISO 8859-1从 1987 年开始,ISO 8859-15从 1999 年开始更新,其中添加了例如欧元符号,和 Windows-1252 (也称为 ISO-8859-1)现在在 HTML5 文档中指定“Latin-1”时用作默认值,我在上面的示例中使用了它。

关于algorithm - 是否有标准算法将 guid 编码为 base 107 或更大?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52413296/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com