0
他們爲什麼選擇分別爲基址64和基址32使用24位或40位(這是非常奇怪的)位組/字大小。base64或base32編碼(RFC 4648)中的位組大小有什麼意義?
具體來說,有人可以解釋爲什麼最小公倍數是重要的?
lcm(log2(64), 8) = 24
lcm(log2(32), 8) = 40
他們爲什麼選擇分別爲基址64和基址32使用24位或40位(這是非常奇怪的)位組/字大小。base64或base32編碼(RFC 4648)中的位組大小有什麼意義?
具體來說,有人可以解釋爲什麼最小公倍數是重要的?
lcm(log2(64), 8) = 24
lcm(log2(32), 8) = 40
Base 64編碼基本上包括服用的8位字節的流,並將其變換爲6位字符流可以被打印的ASCII字符來表示。
一次取一個字節表示您有一個6位字符,剩餘2位。
取兩個字節(16位)表示您有兩個6位字符,剩下4位。
取3個字節(24位)意味着您有三個字節可以精確分割爲4個字符,而不會留下任何位。
所以字節大小和字符大小的lcm自然就是您需要將輸入拆分的大小。
選擇6位字符是因爲這是可以使用所有值的可打印ascii字符的最大尺寸。如果你升到7位,你將需要非打印字符。
基數32的參數是相似的,但現在您使用的是5位字符,因此8和5的lcm是字大小。此字符大小允許區分大小寫不可打印的字符,6位字符需要區分大小寫字符。
我希望能對LCM功能進行更多的分析。具體而言,爲什麼'lcm(a,b)=(a * b)/ gcd(a,b)'是這個問題的答案(直觀地我們可以計算並看到它是這樣)。但是,我們應該如何從數學上解釋這一點。如果您有任何想法可以分享,我們將不勝感激。 –