TL;DR:这些编码是否有正式规范(如ISO或其他国家标准/国际标准),还是主要取决于开发人员作为一种通用技术?
当看到这句话(来自这篇PhD论文)时,我开始从这个兔子洞里钻出来:
也就是说,将c解释为某一数字的基-256编码,从最小significant到大多数significant的数字(即一个小端点数),我们以基数-32打印数字,从大多数significant到最小significant的数字。(注意,外部和表示字符串连接,而内部和表示整数相加。)这组数字是 digits32 =“0123456789abc digits32” 即,除字母e、o、u和t外的字母数字。这是为了减少散列表示包含对某些用户可能有冒犯性的字符序列的可能性(数字[11]的字母数字表示的已知可能性)。
由于在主题方面没有太多经验,我按照以下顺序开始学习基础知识:
所有这些都没有提到Base256,但到目前为止,我将这样总结BaseN编码是什么(用非常过度简化和草率的方式):
Encoding schemes to represent binary data in
textual format based on a set of characters
(e.g., chosen arbitrarily by developer, defined
by a standard/specification), where the size of
the set forms the base of the encoding scheme
(e.g., Base64 - 64 characters).
选择使用“任意”一词是因为RFC4648的Base32定义不同于论文中使用的Base32 (也就是说,字符集显然是这样的)。
至于Base256,论文也不再提它了,当我搜索"Base256“、"base-256”、“Bas-256”等时,我只找到了实现,但没有找到任何正式的规范。它们在名称上似乎也很相似(我在上面使用“任意”一词的另一个原因):
发布于 2022-04-20 03:31:44
在寻找正式规范时,RFCs、ISO或IEEE标准通常都是您想要的。基本N编码的规范是RFC4648.
也就是说,基-256编码与你所链接的基编码完全不同。
基-16到基-64是设计用来编码二进制数据时,我们只有一个有限的字符集可用。引用RFC4648:
在许多情况下,数据的基编码用于在环境中存储或传输数据,这些环境可能出于遗留原因,仅限于used 1数据。基编码也可以用于没有遗留限制的新应用程序中,这仅仅是因为它可以使用文本编辑器操作对象。
除了在RFC中描述的那些编码之外,没有基本-N编码,因为出于实际的原因,这并不重要。我们可以在给定的环境中使用每个允许的字符来稍微压缩更多的数据,但是我们失去了大量的可移植性,并在更新后冒着代码中断的风险。
然而,基-256编码通常用于存储代码点。一个字节已经可以容纳256个不同的值,因此在某种程度上,二进制数据已经存储在base-256中。
代码是我们通常认为的角色。例如,Unicode字符是单个代码点。然而,我们遇到的问题是,我们不能只将代码点存储为- is。通常,我们可以将任何代码点放入4个字节,但是以这种方式存储它们的效率很低,因为大多数语言每个字符都不需要太多的空间。通常,base-256编码是将一个编码点列表编码为尽可能少字节的方法。
UTF-8通常是编码代码点的最流行方法,因为它为任何值提供了一个很好的解决方案,并且允许我们快速区分字符,不管我们从哪里开始阅读。以下是RFC3629对其工作方式的粗略总结。
Char. number range | UTF-8 octet sequence (hexadecimal) | (binary) --------------------+--------------------------------------------- 0000 0000-0000 007F | 0xxxxxxx 0000 0080-0000 07FF | 110xxxxx 10xxxxxx 0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx 0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
https://stackoverflow.com/questions/71933607
复制相似问题