3位编码=八进制; 4位编码=十六进制; 5位编码=?

问题描述 投票:0回答:3

是否存在使用5位作为一组来编码二进制数据的编码?

A-Z包含26个字符,0-9包含10个字符。共有36个字符足以进行5位编码(仅限32种组合)。

为什么我们不使用5位编码而不是Octal或Hexadecimal?

encoding hex base octal base32
3个回答
1
投票

正如@ S.Lott的评论中所提到的,当紧凑性很重要时,base64(6位)通常用于将二进制数据编码为文本。

出于调试目的(例如十六进制转储),我们使用十六进制,因为一个字节的大小可以被4位整除,所以每个字节都有一个唯一的2位十六进制表示,无论它周围有什么其他字节。这使得在查看十六进制转储时很容易“看到”各个字节,并且在8位二进制和2位十六进制之间进行心理转换也相对容易。 (在base64中,字节和编码字符之间没有1:1的对应关系;相同的字节可以根据其位置和其他相邻字节的值产生不同的字符。)


1
投票

是。这是Base32。也许这个名字可能是Triacontakaidecimal,但它太长而且难以记住所以人们简单地称它为基数32.类似地,还有Base64用于6位组

Base32在使用中比十六进制和base64少得多,因为与base64相比它浪费了很多空间,并且与十六进制相比使用奇数位(可以被8,16,32或64整除)。 6也是偶数,因此在二进制计算机上将优于5


0
投票

当然,为什么不:

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
? 
© www.soinside.com 2019 - 2024. All rights reserved.