是否存在使用5位作为一组来编码二进制数据的编码?
A-Z包含26个字符,0-9包含10个字符。共有36个字符足以进行5位编码(仅限32种组合)。
为什么我们不使用5位编码而不是Octal或Hexadecimal?
正如@ S.Lott的评论中所提到的,当紧凑性很重要时,base64(6位)通常用于将二进制数据编码为文本。
出于调试目的(例如十六进制转储),我们使用十六进制,因为一个字节的大小可以被4位整除,所以每个字节都有一个唯一的2位十六进制表示,无论它周围有什么其他字节。这使得在查看十六进制转储时很容易“看到”各个字节,并且在8位二进制和2位十六进制之间进行心理转换也相对容易。 (在base64中,字节和编码字符之间没有1:1的对应关系;相同的字节可以根据其位置和其他相邻字节的值产生不同的字符。)
当然,为什么不:
Welcome to Clozure Common Lisp Version 1.7-dev-r14614M-trunk (DarwinX8664)!
? (let ((*print-base* 32)) (print 1234567))
15LK7
1234567
? (let ((*print-base* 32)) (print (expt 45 19)))
KAD5A5KM53ADJVMPNTHPL
25765451768359987049102783203125
?