Aşağıdaki deyimi tarafından üretilen maksimum karakter sayısı nedir? i düzgün çıkışı biçimlendirmek gerekir.
echo base_convert(sprintf('%u',crc32($_string)),10,36);
crc32($_string)
olan maksimum değeri onluk 4294967295 olduğunu 0xFFFFFFFF olacak 32-bit tamsayı olarak CRC döndürür.
sprintf('%u',crc32($_string))
Imzasız int olarak yorumlanır yukarıdaki değerini dönecektir.
base_convert(sprintf('%u',crc32($_string)),10,36)
This will convert the previously returned int from base 10 to base 36.
Now 4294967295 in base 10 = 1z141z3 in base 36, which is 7 char long. So looks like the MAX length will be 7 char.
Ben zaten bir cevabı olduğunu görmek, ama ben çözümü genellemek istiyorum.
Soru 36 hane 32 base 2 basamak (yani bit) sahip bir dizi temsil etmek için gerekli kaç temelidir. Orta taban 10 / 'e dönüşüm problemine ilgisi yoktur.
Basamak sayısı istenen baz sayısının logaritmasının belirlenir. Biz taban 2 logaritma 32 olduğunu biliyorum, bu yüzden baz 36 logaritma nedir?
32 * log(2) / log(36)
Benim hesap bana 6.1896449 ya da öylesine verir. Bu kısmi basamak ile baş edemez beri, sen 7'ye kadar yuvarlamak gerekir. 6 hane çoğu zaman işleri yüzden de açıklıyor.